我遇到了一个选择语句的问题。
看起来像:
myda = new SqlDataAdapter("Select * FROM tblAgenda WHERE tAgUsrId ='" + Session["usrId"] + "' AND tAgTBD = '" + Session["username"] + "' OR tAgTBD = '" + DBNull.Value + "' ", myconn);
但我不知道如何让DBNull.Value工作。我也尝试过使用“”代替,但它也不起作用。
有关如何重写此声明的任何想法吗?谢谢。
答案 0 :(得分:1)
假设您的会话值已经过清理,那么您可以执行以下操作:
myda = new SqlDataAdapter("Select * FROM tblAgenda WHERE tAgUsrId ='" +
Session["usrId"] + "' AND tAgTBD = '" +
Session["username"] + "' OR tAgTBD is null", myconn);
以上假设您希望tAgTBD为null的所有行。如果要将限制保留为用户ID,则需要在两个ORed条件周围添加括号:
myda = new SqlDataAdapter("Select * FROM tblAgenda WHERE tAgUsrId ='" +
Session["usrId"] + "' AND (tAgTBD = '" +
Session["username"] + "' OR tAgTBD is null)", myconn);
如果会话值尚未清理,那么您需要阅读SQL注入,并查看使用带有参数的SqlCommand
而不是构造字符串;虽然你可能更喜欢走这条路 - 但这是一个更好的习惯,长期获得,然后你不需要考虑价值是否已被消毒。