PDA

View Full Version : سوال: پیغام خطا از ExecuteReader



fatemeh.hosseini
دوشنبه 11 شهریور 1392, 12:41 عصر
سلام دوستان
کد زیر رو نوشتم اما از ExecuteReader خطا میگیره.
_db.cmd.CommandText = "insert into ItemMenu (ItemName , Comment , PermissionID , MenuID) values( @txt1 ,@txt2 , @rd , @menu)";
_db.cmd.Parameters.AddWithValue("@txt1" , TextBox1.Text);
_db.cmd.Parameters.AddWithValue("@txt2", TextBox2.Text);
if(RadioButton1.Checked)
_db.cmd.Parameters.AddWithValue("@rd", 1);
else
_db.cmd.Parameters.AddWithValue("@rd", 2);
_db.cmd.CommandText = "select MenuID from Menu where NameMenu=" + DropDownList1.SelectedValue.ToString() ;
_db.cmd.Parameters.Clear();
_db.cmd.Connection = _db.cnn;
_db.cnn.Open();
_db.dr = _db.cmd.ExecuteReader();
if (_db.dr.Read())
{
_db.cmd.Parameters.AddWithValue("@menu" , _db.dr["MenuID"].ToString());
}


_db.cmd.ExecuteNonQuery();
_db.cnn.Close();

نمیدونم درست از commandText های تو در تو استفاده کردم یا نه. commandText دومی برای این هست که آی دی منوی مادر رو بخونه و داخل جدول آیتم منو ثبت کنه. برای اینکه مشخص بشه آیتم متعلق یه کدوم منو هست. اما این پیغام خطا رو میده:
invalid column name 'همون گزینه ای که از دراپ دان لیست انتخاب میشه'

لازمه بگم که دراپ دان لیست بایند شده به جدول منو ها و هنگام ایجاد هر آیتم منو ، منوی مادرش از این دراپ دان لیست انتخاب میشه.

ممنون میشم کسی کمک کنه. خیلی کارم گیره

amin750
دوشنبه 11 شهریور 1392, 13:56 عصر
فکر نکنم بتونی قبل از اینکه تمام فیلدهاتو مقدار دهی کنی ExecuteReader رو اجرا کنی
بعد از select یه شرط بذار که اگه چیزی پیدا کرده @menu رو مقدار دهی کنه

fatemeh.hosseini
دوشنبه 11 شهریور 1392, 15:11 عصر
فکر نکنم بتونی قبل از اینکه تمام فیلدهاتو مقدار دهی کنی ExecuteReader رو اجرا کنی
بعد از select یه شرط بذار که اگه چیزی پیدا کرده @menu رو مقدار دهی کنه

چه شرطی؟؟؟؟!!!!! نمیدونم چه شرطی بزارم

nice_boy_a
دوشنبه 11 شهریور 1392, 15:22 عصر
سلام دوستان
کد زیر رو نوشتم اما از ExecuteReader خطا میگیره.
اما این پیغام خطا رو میده:
invalid column name 'همون گزینه ای که از دراپ دان لیست انتخاب میشه'


سلام.
دستور SQL مشکل داره، اسم ستون هاتو چک کن

fatemeh.hosseini
دوشنبه 11 شهریور 1392, 18:18 عصر
سلام.
دستور SQL مشکل داره، اسم ستون هاتو چک کن

دستور sql داخل خود sql server درست جواب میده. همون نتیجه ای که میخوام ، یعنی آی دی منو ، رو میده بهم. الان من نمیدونم چرا میگه ستون نامعتبر دارم. چه ستون هایی رو باید چک کنم؟

nice_boy_a
دوشنبه 11 شهریور 1392, 19:54 عصر
دستور sql داخل خود sql server درست جواب میده. همون نتیجه ای که میخوام ، یعنی آی دی منو ، رو میده بهم. الان من نمیدونم چرا میگه ستون نامعتبر دارم. چه ستون هایی رو باید چک کنم؟

دستوری که داخل SQL مینویسی رو بزار ببینم؟

amin750
دوشنبه 11 شهریور 1392, 20:49 عصر
چه شرطی؟؟؟؟!!!!! نمیدونم چه شرطی بزارم
شرط بذار اگه از select چیزی پیدا کرده رو چک کنه؟
با sql data adapter دستور select رو بنویس بریز توی یه data set بعد دیتاست رو چک کن ببین پره یا نه اگه پره menu@ رو بریز تو فیلدش


SqlDataAdapter sda = new SqlDataAdapter("select MenuID from Menu where NameMenu=@name", connection);
sda.SelectCommand.Parameters.AddWithValue("@name", DropDownList1.SelectedValue.ToString() );
DataSet ds = new DataSet();
sda.Fill(ds);

if (ds.Tables[0].Rows.Count > 0) //شرط پیدا کردن MenuID
{
sda.SelectCommand.Parameters.AddWithValue("@menu",.... );
}