مشکل در هنگام insert کردن
با سلام
من یه کلاس ساختم بعد یه رشته به عنوان کوئری بهش پاس میکنم
ولی روی دستور DB.cmd.ExecuteNonQuery();
این ارور رو بهم میده
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
لطفا راهنمایی کنید
باتشکر فراوان
نقل قول: مشکل در هنگام insert کردن
کدتون رو قرار بدین.اگر موقع سلکت و اجرای بقیه دستورات مشکل ندارین، فقط sqlcomman رو اینجا بزارین تا ببینم مشکل چیه
نقل قول: مشکل در هنگام insert کردن
این کلاسیه که تعریف کردم
class DB
{
public static SqlConnection con = new SqlConnection("SERVER=.; DataBase=db; Integrated Security = True");
public static SqlDataAdapter da = new SqlDataAdapter("", con);
public static DataTable dt = new DataTable();
public static SqlCommand cmd = new SqlCommand("", con);
public static DataTable exec(string s)
{
DataTable dt = new DataTable();
DB.cmd.CommandText = s;
if (DialogResult.No == MessageBox.Show("آیامطمئنید؟", "هشدار", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign))
return dt;
DB.con.Open();
DB.cmd.ExecuteNonQuery();
DB.con.Close();
DB.da.Fill(dt);
return dt;
}
واین هم کامندی که براش میفرستم
private void button1_Click(object sender, EventArgs e)
{
s = "insert into project Values(";
s += projectsubject.Text + " , ";
s += comboBox1.SelectedItem + " , ";
s += comboBox2.SelectedItem + " , ";
s += textBox7.Text + " , '";
s += textBox2.Text + "' , '";
s += textBox5.Text + "' , '";
s += textBox3.Text + "' , '";
s += textBox4.Text + "')";
dt = DB.exec(s);
}
نقل قول: مشکل در هنگام insert کردن
مگه میشه insert رو توی دیتا تیبل برگردوند؟؟؟
یه مشکل دیگه هم کدتون داره که خودم تست کردم
اینجا اومدید اینطور تعریف کردید
public static SqlDataAdapter da = new SqlDataAdapter("", con);
بعدش آخر کار
DB.da.Fill(dt);
الان با این نوع تعریف دستوری ست نکردید که بخواد اجرا کنه
نقل قول: مشکل در هنگام insert کردن
دوست عزیز میشه منو راهنمایی کنی
الان دقیقا باید چه کاری کنم؟
باتشکر
نقل قول: مشکل در هنگام insert کردن
چون خطایی که می گید روی DB.cmd.ExecuteNonQuery();
می گیره به نظرم کوئریتون رو یه چک بکنید بخصوص نوع فیلدهاتون... چون دستورش که خطا نداره و اگه احیانا تعداد فیلدهای کوئری کمتر از جدول باشه باید اسامی فیلدهاتون رو هم بیارید تو کوئری. بهتره یه نما از جدول بزارید شاید بهتر بشه راهنمایی کرد.
و در مورد این کلاس هم به نظرم بهتره یه تابع برای select بنویسید که datatable برگردونه و یه تابع هم برای insert,update,delete.
نقل قول: مشکل در هنگام insert کردن
همان طور که گفته شد کد شما دارای ایرادات زیادی است.
اول: این کد دستور نداره sqlDataAdaptor بدون دستور یعنی چه؟ ""
public static SqlDataAdapter da = new SqlDataAdapter("", con);
دوم: DataTable رو در دو جا تعریف کردی یکی سراسری و یکی محلی. اگه به سراسری نیازی نیست حتما بردارید چون بیهوده فضا مصرف می کنه.
public static DataTable dt = new DataTable();
سوم:sqlCommand بدون دستور! پس چه درخواستی از پایگاه داری؟ دستورت باید در sqlcommand باشه. "" خالی
public static SqlCommand cmd = new SqlCommand("", con);
چهارم:در دستور insert مشکل وجود داره. نام ستون های جدول project باید آورده شود. مثلا: insert into project(column1,column2,..) values(value1,value2,...)
s = "insert into project Values(";
پنجم: اصلا تعریف کلاس به دین شکل کار قشنگی نیست. شما مقادیر اصلی و ثابت اتصال به پایگاه رو در یک کلاس قرار بدی و بر اساس اون عملیات درج و حذف و ... رو انجام بدی و بعدا در dataTable بر اساس نیاز قرار بدی.
نقل قول: مشکل در هنگام insert کردن
مواردی که دوستمون گفتن درسته فقط من مورد سومش رو اصلاح کنم
DB.cmd.CommandText = s;
دوستمون naghneh این کدی رو که نوشتن دستور رو به SqlCommand اختصاص میده
نقل قول: مشکل در هنگام insert کردن
نقل قول:
نوشته شده توسط
rezafatehy
مواردی که دوستمون
گفتن درسته فقط من مورد سومش رو اصلاح کنم
DB.cmd.CommandText = s;
دوستمون
naghneh این کدی رو که نوشتن دستور رو به SqlCommand اختصاص میده
بله . منظورم اینه که اون خط دیگه لازم نیست. اگر مورد سوم رو نوشتن دیگه لازم به commandText نیست.
موفق باشید.