asp.net中的SQL错误
本文关键字:错误 SQL 中的 net asp | 更新日期: 2023-09-27 18:07:18
如果你帮助我,我在sql代码asp.net c#有一个问题。
my error is:
System.Data.SqlClient。用户代码未处理SqlException
消息= ')'附近语法错误。
和我的查询代码如下:
string query = @"insert into ReviewPaper(Overall_Rating,Paper_ID,Conference_Role_ID,Deitails)
values(" + 0 + "," + ListBox4.SelectedValue +"," + ListBox1.SelectedValue + "," + null + ")";
不能这样插入null
。使用参数化查询
string query = "insert into ReviewPaper(Overall_Rating,Paper_ID,Conference_Role_ID,Deitails)
values (@overall_rating,@paper_id,@conference_role_id,@details)";
cmd=new SqlCommand(query,cn);
cmd.Parameters.AddWithValue("@overall_rating",0);
cmd.Parameters.AddWithVaule("@paper_id",ListBox2.SelectedValue);
cmd.Parameters.AddWithValue("@conference_role_id",Listbox1.SelectedValue);
cmd.Parameters.AddWithValue("@details",DBNull.Value);
是的,正如其他人已经说过的,你不能像这样使用null,但是还有比这更严重的问题:
- 你的sql语句容易受到sql注入攻击,因为你没有参数化你的查询
-
如果您不将值插入到列中,则不列出该列!
string query = @"insert into ReviewPaper(Overall_Rating,Paper_ID,Conference_Role_ID)
values(" + 0 + "," + ListBox4.SelectedValue +"," + ListBox1.SelectedValue +")";
我想null
可能是在制造愤怒:
string query = @"insert into ReviewPaper(Overall_Rating,Paper_ID,Conference_Role_ID,Deitails)
values(0," + ListBox4.SelectedValue +"," + ListBox1.SelectedValue + ",null)";
你会注意到我将0
作为字符串的一部分,并将null
作为字符串的一部分(而不是将整数0
和NULL
值与字符串连接)
在这个例子中,您正在创建一个SQL字符串,您计划将其发送到将在那里执行的数据库。当你创建字符串的时候字符串的结果是…
"insert into ReviewPaper(Overall_Rating,Paper_ID,Conference_Role_ID,Deitails) values(0, someValueFromListbox4,someOtherValueFromListbox1,)"
您将注意到最后一个参数丢失了。
string query = @"insert into ReviewPaper(Overall_Rating,Paper_ID,Conference_Role_ID,Deitails)
values(" + 0 + "," + ListBox4.SelectedValue +"," + ListBox1.SelectedValue + ",NULL)";
下面是另一个使用string的例子。我推荐的格式
string query = String.format("Insert into ReviewPaper(Overall_Rating,Paper_ID,Conference_Role_ID,Deitails) Values(0,{0},{1},NULL)", ListBox4.SelectedValue, ListBox1.SelectedValue);
尝试将null放在语音标记中,使其结尾看起来像",null)";