PDA

View Full Version : چرا کوئری زیر در c# خطا میده



aminbrleevb
چهارشنبه 16 بهمن 1392, 18:49 عصر
دوستان سلام
می خواام ببینم چرا تیکه کد زیر در درج خطا میده
آیا رشته ای که می فرستم مشکل داره



SqlCommand cmd = new SqlCommand();
string sql = "insert into t_user(id,sname,lname,pname) values((SELECT MAX(id)+1 FROM t_user),'" + sname + "','" + lname + "','" + pname + "')";
cmd.CommandText = sql;
cmd.Connection = connect;
cmd.ExecuteNonQuery();


من پستی زدم که حذف شد توسط Mani_rf (http://barnamenevis.org/member.php?81144-Mani_rf) لطفا این پست رو حذف نکنید گرفتاریم آقا

mehrdad.ghorbaniyan
چهارشنبه 16 بهمن 1392, 18:54 عصر
دوست عزیز id را بذار رو اتوماتیک تا خودش شماره بندازه.این خودش بعد اگه لیست خالی باشه.به select دومی گیر میده.چون id وجود نداره که +1 کنه

hamid_hr
چهارشنبه 16 بهمن 1392, 18:54 عصر
چه خطایی میده؟

aminbrleevb
چهارشنبه 16 بهمن 1392, 18:59 عصر
چجوری بندازم رو اتوماتیک من حتی این کوئری رو تو خود sql server هم گذاشتم ارور میداد - فرض بر اینه که آیدی از قبل وجود داره چون چند فیلد وارد شده. لطفا کدی رو پیشنهاد کنید که بدون خطا و فقط با یک کوئری کار درج رو انجام بده
این خطاشه


Msg 1046, Level 15, State 1, Line 2
Subqueries are not allowed in this context. Only scalar expressions are allowed.

aslan
پنج شنبه 17 بهمن 1392, 10:20 صبح
سلام
این شکلی استفاده کنید :


insert into test2(id,x1,x2,x3) select Max(id)+1 ,'a','b','c' FROM test2

khokhan
پنج شنبه 17 بهمن 1392, 11:07 صبح
کسی کمک نمی کنه
استفاده صحیح از پارامترها اینطوریه

SqlConnection mySqlConnection = new SqlConnection(connect);
mySqlConnection.Open();
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = "INSERT INTO t_user ( id,sname,lname,pname) VALUES ((SELECT MAX(id)+1 FROM t_user), @sname, @lname,@pname)";
mySqlCommand.Parameters.Add("@sname", SqlDbType.NVarChar,50);
mySqlCommand.Parameters.Add("@lname", SqlDbType.NVarChar, 50);
mySqlCommand.Parameters.Add("@pname", SqlDbType.NVarChar, 50);
mySqlCommand.Parameters["@sname"].Value = textBox1.Text;
mySqlCommand.Parameters["@lname"].Value = textBox2.Text;
mySqlCommand.Parameters["@pname"].Value = textBox3.Text;
mySqlCommand.ExecuteNonQuery();
MessageBox.Show("Successfully added row to t_user table");

mySqlConnection.Close();

aminbrleevb
پنج شنبه 17 بهمن 1392, 15:48 عصر
بازم خطا میده دوستان چرا
var connect = new SqlConnection(str_con); connect.Open(); SqlCommand cmd = new SqlCommand(); string sql = "insert into t_user(id,sname,lname,pname) select Max(id)+1 ,'" + sname + "','" + lname + "','" + pname + "' FROM t_user"; cmd.CommandText = sql; cmd.Connection = connect; cmd.ExecuteNonQuery();

aminbrleevb
جمعه 18 بهمن 1392, 23:37 عصر
با سلام کد بالا برام این ارور رو میده An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

aminbrleevb
شنبه 19 بهمن 1392, 10:51 صبح
این مشکل حل شد به خاطر این بود که طول تعریف شده یکی از فیلد ها varchar 10 بود که کم بود