C# asp.net中的SQL错误
如果您能帮助我,我在sql代码asp.net C#中遇到了一个问题 我的错误是: System.Data.SqlClient.SqlException未由用户代码处理C# asp.net中的SQL错误,c#,asp.net,sql-server,C#,Asp.net,Sql Server,如果您能帮助我,我在sql代码asp.net C#中遇到了一个问题 我的错误是: System.Data.SqlClient.SqlException未由用户代码处理 Message=靠近“')”的语法不正确 我的查询代码如下: string query = @"insert into ReviewPaper(Overall_Rating,Paper_ID,Conference_Role_ID,Deitails) values(" +
Message=靠近“')”的语法不正确 我的查询代码如下:
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(0," + ListBox4.SelectedValue +"," + ListBox1.SelectedValue + ",null)";
您会注意到我将您的
0
作为字符串的一部分,并将null
作为字符串的一部分(而不是将整数0
和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);
在这个示例中,您要做的是创建一个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.format的示例,我推荐它
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,但还有比这更严重的问题:
string query=@“插入到ReviewPaper(总体评分、论文ID、会议角色ID)
值(“+0+”、“+ListBox4.SelectedValue+”、“+ListBox1.SelectedValue+”)代码>
试着把null放在语音标记中,使结尾看起来像“null” @emilios,我相信jadarnel27拥有它,因为关键字null被INSERT语句理解,而不是你正在编写的C#代码。也许可以在调试器中查看查询的值,或者将其转储到屏幕上,以查看您的查询与解决方案之间的差异。+1表示参数化查询,因为这对SQL注入攻击更安全,对吗?