PDA

View Full Version : سوال: خطای sql هنگام ذخیره



aminaltavista
جمعه 17 شهریور 1391, 14:40 عصر
سلام

هنگام ذخیره سازی تو دیتابیس از یکی از فیلدام برنامه خطا میگیره:

92499

این فیلد عجیبی هست چون حتی هنگام تعریفش تو دیتابیس بین علامت [] قرار گرفت و آزاد نشد.

چه مشکلی هست؟ راستی من این فیلد رو تو یه جدول دیگه کلید اصلی گرفتم و الان هم کلید خارجیه. آیا باید تو این جدول هم بهش مقدار بدم؟

ehsan7007
جمعه 17 شهریور 1391, 14:47 عصر
کد ذخیرت رو بنویس .

aminaltavista
جمعه 17 شهریور 1391, 15:23 عصر
کد ذخیرت رو بنویس .


if (Conn.State == ConnectionState.Open)
Conn.Close();

//set sqlcommand connection
//Assign the command to insert data in to the database
SqlCommand Comm = new SqlCommand("Insert Into t_shift(sh_title,sh_start,sh_end,sh_time,sh_costPe rHour" +
",sh_costWhole,sh_desc,[sh-UserName])values(@sh_title,@sh_start,@sh_end,@sh_time," +
"@sh_costPerHour,@sh_costWhole,@sh_desc,@[sh-UserName])", Conn);
Comm.Parameters.Add("@sh_title", txtCaption.Text.ToString());
Comm.Parameters.Add("@sh_start", txtStart.Text.ToString());
Comm.Parameters.Add("@sh_end", txtFinish.Text.ToString());
Comm.Parameters.Add("@sh_time", txtTime.Text.ToString());
Comm.Parameters.Add("@sh_costPerHour", Int32.Parse(txtPricePfTime.Text));
Comm.Parameters.Add("@sh_costWhole", txtAllPrice.Text.ToString());
Comm.Parameters.Add("@sh_desc", txtCommand.Text.ToString());
Comm.Parameters.Add("@[sh-UserName]", cmbUser.Text.ToString());


Conn.Open();
Comm.ExecuteNonQuery();
Conn.Close();

Conn کانکشنم هست.

roolinjax
شنبه 18 شهریور 1391, 19:13 عصر
من تا حالا با این روش (پارامتریک) عمل درج انجام ندادم اما اگر بخوای به روش خودم بهت می گم.
فقط کافیست لب تر کنی و بخواهی دوست عزیز

aminaltavista
شنبه 18 شهریور 1391, 21:15 عصر
من تا حالا با این روش (پارامتریک) عمل درج انجام ندادم اما اگر بخوای به روش خودم بهت می گم.
فقط کافیست لب تر کنی و بخواهی دوست عزیز

بهترین روش کوتاه ترین اونه! خواهش میکنم شما لصف دارید. پس زحمتش رو بکشید.:تشویق:

roolinjax
یک شنبه 19 شهریور 1391, 17:15 عصر
با سلام
اینم کدی که من برای درج اطلاعات استفاده می کنم :

SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection();
SqlDataAdapter da = new SqlDataAdapter();
cmd.CommandText = "insert into tbl_emtiaz (cid,name,family,mojodi,emtiaz) values ('" + _cid + "','" + _name + "','" + _family + "'," + _mojodi + "," + _emtiaz + ")";
cmd.ExecuteNonQuery();

البته با فرض بر قرار بودن و باز بودن کانکشن نوشتم.
نکته ای که در اینجا وجود داره اینه که شما باید برای مقادیر فیلدهای عدد از تک کوتیشن استفاده نکنی و برای سایر مقادیر مثل رشته ای و تاریخ و زمان و ... از تک کوتیشن قبل و بعد از زوج کوتیشن استفاده کنید .
موفق باشید

darklady
شنبه 25 شهریور 1391, 18:46 عصر
دوست عزیز در قسمت پارامتر ها با توجه به نوع داده ای که داری باید به صورت زیر کدت رو بنویسی:
l


comm.Parameters.Add("@sh_title", SqlDbType.NVarChar).Value = textBox2.Text;
comm.Parameters.Add("@cid", SqlDbType.Int).Value = int.Parse(textBox1.Text);

SharpSabre
شنبه 25 شهریور 1391, 19:07 عصر
@[sh-UserName] رو تغییر بده به @[sh_UserName] بعد می تونی @sh_UserName استفاده کنی

aminaltavista
شنبه 25 شهریور 1391, 19:41 عصر
دوست عزیز در قسمت پارامتر ها با توجه به نوع داده ای که داری باید به صورت زیر کدت رو بنویسی:
l


comm.Parameters.Add("@sh_title", SqlDbType.NVarChar).Value = textBox2.Text;
comm.Parameters.Add("@cid", SqlDbType.Int).Value = int.Parse(textBox1.Text);



صحیح . روش مورد علاقه من همینه و به نظرم کارامد تره فقط حیف که تو MSDN ازش به عنوان روش قدیمی و ناکارآمد یاد میشه:ناراحت: