PDA

View Full Version : سوال: به چه دلیل اجرای دستور INSERT با خطای ...Must declare the variable مواجه می شود؟



danijoon
پنج شنبه 19 فروردین 1389, 21:35 عصر
سلام
من می خوام مقدار textbox رو بریزم تو بانک
گیر کردم
به execuetnonquery گیر میده
کمک
ارورش اینه:Must declare the variable '@n'.
مقادیر رو میگیره اما زمان وارد کردن به بانک error میده:عصبانی++:

Moslemu
پنج شنبه 19 فروردین 1389, 21:44 عصر
سلام.
شما بايد قبل از استفاده از پارامتر ها در C# اونا رو تعريف كني

alireza_s_84
پنج شنبه 19 فروردین 1389, 21:50 عصر
سلام
من می خوام مقدار textbox رو بریزم تو بانک
گیر کردم
به execuetnonquery گیر میده
کمک
ارورش اینه:Must declare the variable '@n'.
مقادیر رو میگیره اما زمان وارد کردن به بانک error میده:عصبانی++:
سلام:
اینجوری که پیام نشون میده یعنی شما از یه متغری که تعریف نشده داری استفاده میکنی.
کد رو بذار تا بیشتر راهنمایی بشی

danijoon
شنبه 21 فروردین 1389, 11:43 صبح
اینم سورس
ممنون میشم اگه کمک کنید
protectedvoid Button1_Click(object sender, EventArgs e)
{
string n, f, em, a, p;
n = Request["name"];
f = Request["family"];
em = Request["email"];
a = Request["address"];
p = Request["password"];
string cs = "Persist Security Info=False;Integrated Security=true;Initial Catalog=mahsa;server=(local)";
SqlConnection myConnection = newSqlConnection(cs);
string myInsertQuery = "INSERT INTO members (name,family,email,address,password) values(@n,@f,@em,@a,@p)";
SqlCommand myCommand = newSqlCommand(myInsertQuery);

myCommand.Connection = myConnection;

myConnection.Open();

myCommand.ExecuteNonQuery();
myCommand.Parameters.Add("@n",name.Text);
myCommand.Parameters.Add("@f",family.Text);
myCommand.Parameters.Add("@em",email.Text);
myCommand.Parameters.Add("@a",address.Text);
myCommand.Parameters.Add("@p",password);

myCommand.Connection.Close();
}

mohammad kafiyan
شنبه 21 فروردین 1389, 11:59 صبح
سلام دوست عزیز از می تونی از نمونه کد زیر استفاده کنی

public void save_maseer(string id, string type, string name, string cost)
{
try
{
connect();
cmd.CommandText = "Insert Into maseer([id],[type],[name],[cost]) Values('" + id +
"', '" + type +
"', '" + name +
"', '" + cost + "')";
cmd.Connection = cnn;
sd.SelectCommand = cmd;
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
}
catch (Exception)
{
MessageBox.Show("can not save_maseer to sqlserver");
}

M.YasPro
شنبه 21 فروردین 1389, 16:30 عصر
سلام
شما به جای parameter ها باید placeHolder ها استفاده کنید .


myCommand.Parameters.Add("@n",name.Text);

این اعلان باعث میشه متغیر @n به engine دیتابیس بره .
ولی اگر از


myCommand.Parameters.AdWithValue("@n",name.Text);

استفاده کنید می تونید در دستور sql که توی کد برنامه هست ازش استفاده کنید .

مثل :


cmd.CommandText="select * from table where name=@n";


موفق باشید .

rabi213
شنبه 21 فروردین 1389, 17:49 عصر
من این ارور رو بهم میده برای cmd.executeNonQuery():
The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data.

چرا؟

seven7777777
یک شنبه 22 فروردین 1389, 13:44 عصر
در سورس بالا مشکل از اینه که اول کوئری اجرا شده و بعد پارامترها پاس داده شده ، لذا باید خط اجرای کوئری رو برد بعد از ارسال پارامترهای کوئری !!!