C# 特殊查询字符串导致语法错误
我创建了一个网站,登录系统中的语法错误不断发生C# 特殊查询字符串导致语法错误,c#,sql,ado.net,syntax-error,C#,Sql,Ado.net,Syntax Error,我创建了一个网站,登录系统中的语法错误不断发生 conn.Open(); int amountOfUsers = (int)command.ExecuteScalar(); if (amountOfUsers == 1) { //User exists, check if the password match
conn.Open();
int amountOfUsers = (int)command.ExecuteScalar();
if (amountOfUsers == 1)
{
//User exists, check if the password match
query = string.Format("SELECT password FROM users WHERE name = '{0}", login);
command.CommandText = query;
string dbPassword = command.ExecuteScalar().ToString();
您尚未使用格式字符串中的撇号关闭字符串标识符
{0}
:
query = string.Format("SELECT password FROM users WHERE name = '{0}'", login);
但我强烈建议您不要在SQL中使用格式字符串,因为这是SQL注入的一个很好的安全漏洞 可能的重复项(我可以把一些asp.net阅读器转到VtC吗,这是afaict重新发布的问题-谢谢)。请不要使用裸字符串来执行SQL语句。使用参数化查询,它们同样易于编写,但速度更快、更安全,并且完全避免了转换问题。如果用户输入了
,则显示下拉表用户--
作为登录名,或仅”或1=1--代码>。可能的副本不仅存在安全风险。字符串转换会导致数字和日期参数出现很多问题,性能更差,因为执行计划不能重用等等。