5
我刚刚开始使用ASP.NET C#并且我的数据库是SQL Server。我正在尝试在准备好的语句中使用我想要使用的查询。在ASP.Net中编写语句使用SQL Server时的C#
这是允许登录到用户的查询:甚至当我进入
SqlParameter UserName = new SqlParameter("@user", SqlDbType.NVarChar, 30);
SqlParameter Password = new SqlParameter("@pass", SqlDbType.NVarChar, 20);
UserName.Value = user.ToLower();
Password.Value = pass;
SqlCommand command = new SqlCommand(null, conn);
command.Parameters.Add(UserName);
command.Parameters.Add(Password);
command.CommandText = "SELECT * FROM table_users WHERE user_name = '@user' AND password = '@pass';";
command.Prepare();
SqlDataReader reader = command.ExecuteReader();
bool tmp = reader.HasRows;
tmp
变量的值总是FALSE
,存在用户使用正确的密码。
,如果我只是删除参数和编写查询这样:
command.CommandText = "SELECT * FROM table_users WHERE user_name = '"+user+"' AND password = '"+ pass+"';";
tmp
变量获取值TRUE
对存在的用户。
我试图用INSERT INTO
查询来使用这个语法,它工作正常。
我已阅读所有关于将@
更改为?
的建议,但它不起作用。 我有一个错误:
Incorrect syntax near '?'. Statement(s) could not be prepared.
请帮助我, 谢谢!
非常感谢你很多,现在是它的工作。我会检查“盐渍嘶嘶声”。 –
@MarkGravell - “顺便说一句,在这里调用Prepare()在这里没有帮助。”你能否详细说明_why_使用准备好的声明对这种用法没有帮助? –
@Jesse因为大多数数据库这些天不关心:他们有自动查询计划缓存特设查询,使任何区别基本无法测量 –