PDA

View Full Version : Parameter city has no default value



RezaJP
شنبه 17 مرداد 1383, 18:25 عصر
سلام
دوستان اگه میشه یه کمکی بکنید مشکل من حل بشه
برای اضافه کردن یک رکورد به یک دیتابیس در فرم این خطا ایجاد میشه
از روش پارامتر استفاده کردم
البته از روشی که آقای نصیری در جزوه گفته بودن هم استفاده کردم که یک خطای دیگه میده با این مضمون :
Syntax error in INSERT INTO
البته من دقیقا از همون دستوری که ایشون گفتند استفاده کردم
کمکم کنید اگه ممکنه

MSYNK
شنبه 17 مرداد 1383, 18:45 عصر
با سلام
اگه میشه حتما کدی رو که استفاده کردین لطف کنید. (یعنی اینجا تایپش کنین!)
موفق باشین.

RezaJP
یک شنبه 18 مرداد 1383, 01:52 صبح
این اولی

oleDbDataAdapter1.InsertCommand.Parameters.Add("@address",System.Data.OleDb.OleDbType.VarChar,100,"address");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@city",System.Data.OleDb.OleDbType.VarChar,30,"city");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@company",System.Data.OleDb.OleDbType.VarChar,20,"company");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@country",System.Data.OleDb.OleDbType.VarChar,20,"country");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@email",System.Data.OleDb.OleDbType.VarChar,30,"email");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@familiar",System.Data.OleDb.OleDbType.VarChar,50,"familiar");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@faxno",System.Data.OleDb.OleDbType.VarChar,30,"faxno");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@fname",System.Data.OleDb.OleDbType.VarChar,20,"fname");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@lname",System.Data.OleDb.OleDbType.VarChar,30,"lname");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@mobileno",System.Data.OleDb.OleDbType.VarChar,11,"mobileno");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@servicename",System.Data.OleDb.OleDbType.VarChar,20,"servicename");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@state",System.Data.OleDb.OleDbType.VarChar,30,"state");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@telno",System.Data.OleDb.OleDbType.VarChar,30,"telno");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@zipcode",System.Data.OleDb.OleDbType.VarChar,10,"zipcode");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@time",System.Data.OleDb.OleDbType.VarChar,15,"time");
oleDbDataAdapter1.InsertCommand.Parameters.Add("@date",System.Data.OleDb.OleDbType.VarChar,10,"date");

oleDbDataAdapter1.InsertCommand.Parameters["@address"].Value=txtAddress.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@city"].Value=txtCity.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@company"].Value=txtCompany.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@country"].Value=txtCountry.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@email"].Value=txtEmail.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@familiar"].Value=txtFamiliar.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@faxno"].Value=txtFaxNo.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@fname"].Value=txtFName.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@lname"].Value=txtLName.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@mobileno"].Value=txtMobileNo.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@servicename"].Value=ddService.SelectedItem.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@state"].Value=txtState.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@telno"].Value=txtTelNo.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@zipcode"].Value=txtZipCode.Text;
oleDbDataAdapter1.InsertCommand.Parameters["@time"].Value=DateTime.Now.ToShortTimeString();
oleDbDataAdapter1.InsertCommand.Parameters["@date"].Value=System.DateTime.Now.ToShortDateString() ;

oleDbConnection1.Open();
oleDbDataAdapter1.InsertCommand.ExecuteNonQuery();
oleDbConnection1.Close();

از روش آقای نصیری هم اینه


/*string sqlStr="INSERT INTO order(email, familiar, fname, lname, company, country, state, city, zipcode, address, telno, faxno, mobileno, servicename, date, time) VALUES(" + txtEmail.Text.Trim()+ "," + txtFamiliar.Text.Trim() + "," + txtFName.Text.Trim() + "," + txtLName.Text.Trim() +
"," + txtCompany.Text.Trim() + "," + txtCountry.Text.Trim() + "," + txtState.Text.Trim() + "," + txtCity.Text.Trim() + "," + txtZipCode.Text.Trim() + "," + txtAddress.Text.Trim() + "," + txtTelNo.Text.Trim() + "," + txtFaxNo.Text.Trim() + ","
+ txtMobileNo.Text.Trim() + "," + ddService.SelectedItem.Text + "," + DateTime.Now.ToShortDateString() + "," + DateTime.Now.ToShortTimeString()+ ")";
oleDbConnection1.Open();
oleDbDataAdapter1.InsertCommand.ExecuteNonQuery();
oleDbConnection1.Close();

که دومی یه خطا تولید میکنه که میگه
syntax error in 'insert into' expression

MSYNK
یک شنبه 18 مرداد 1383, 10:37 صبح
با سلامی دوباره
فکر کنم که کد شما اشکالات اساسی داره!

1. شما باید این رشته رو به عنوان آرگومان ورودی به متد ExecuteNonQuery یه OleDbCommand بفرستی!
2. در ضمن روش آقای نصیری کمی اشکال داره که بعدها خودشون هم تذکر دادند:
اینکه برای مقدار دهی فیلدهایی که نوعشون Text و یا memo و یا char و یا خلاصه یه چیزی تو مایه های String باشه باید مقدارش در Query بین دو تا علامت کوتیشن ( ' ) قرار بگیره! مثلا:

INSERT INTO tblTest (Username,Email) VALUES ('msynk','msynk@gawab.com')
ویا :

string sqlQuery = "INSERT INTO tblTest (Username,Email) VALUES ('" + txtUsername.Text + "','" + txtEmail.Text + "')

در نهایت اینجوری هم کار تمومه:

OleDbConnection conn = new OleDbConnection(connstr);
OleDbCommand com = new OleDbCommand(conn);
com.CommandText=sqlQuery;
com.ExecuteNonQuery();
که اون connstr یه رشته است که کانکشن استرینگ رو ذخیره کرده!
موفق باشین.

RezaJP
یک شنبه 18 مرداد 1383, 17:20 عصر
خیلی ممنون ، لطف کردی
البته این رو تو کد یکی از بچه ها دیده بودم اما بین اونها شک کردم (:D)
مرسی بهر حال

RezaJP
یک شنبه 18 مرداد 1383, 17:26 عصر
خیلی ممنون ، لطف کردی
البته این رو تو کد یکی از بچه ها دیده بودم اما بین اونها شک کردم (:D)
مرسی بهر حال