我在C#ASP.NET MVC中有一个SQL查询,它在没有WHERE
条件的情况下可以很好地工作,但是在WHERE
条件下,则不能工作。
这是SQL语句:
string strSQL = "SELECT u.USERID, u.NAME, io.CHECKTIME, io.CHECKTYPE, io.SENSORID
FROM USERINFO u
INNER JOIN CHECKINOUT io ON u.USERID = io.USERID
WHERE u.NAME = " + conditionSearch.NAME;
使用conditionSearch.NAME
是视图中的变量,我检查了一下,可以搜索需要的值。
您能否告诉我在这种WHERE
情况下出了什么问题?谢谢!
答案 0 :(得分:2)
此处的直接解决方法是将名称放在单引号内的WHERE
子句中,以创建字符串文字:
string strSQL = "SELECT u.USERID, u.NAME, io.CHECKTIME, io.CHECKTYPE, io.SENSORID
FROM USERINFO u INNER JOIN CHECKINOUT io ON u.USERID = io.USERID
WHERE u.NAME = '" + conditionSearch.NAME + "'";
然而,直接连接以形成SQL查询字符串通常是严重的不良做法。更好的方法是使用带名称的占位符的预准备语句。也就是说,使用类似以下内容的查询:
SELECT u.USERID, u.NAME, io.CHECKTIME, io.CHECKTYPE, io.SENSORID
FROM USERINFO u
INNER JOIN CHECKINOUT io
ON u.USERID = io.USERID
WHERE u.NAME = ?;
然后,让您的数据库担心如何正确绑定name参数。
答案 1 :(得分:0)
此处的直接解决方法是将名称放在WHERE子句中的单引号内,以创建字符串文字:
蒂姆,您好,感谢您的回复。我尝试使用db中的单引号来命名,但是结果仍然返回null。
哦,但是我尝试了您的解决方案('“ + conditionSearch.NAME +”'“),它可以完美运行。 非常感谢你!