从sql server db中选择NULL值

时间:2011-05-31 08:54:22

标签: select dbnull sqldataadapter

我遇到了一个选择语句的问题。

看起来像:

myda = new SqlDataAdapter("Select * FROM tblAgenda WHERE tAgUsrId ='" + Session["usrId"] + "' AND tAgTBD = '" + Session["username"] + "' OR tAgTBD = '" + DBNull.Value + "' ", myconn);

但我不知道如何让DBNull.Value工作。我也尝试过使用“”代替,但它也不起作用。

有关如何重写此声明的任何想法吗?谢谢。

1 个答案:

答案 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而不是构造字符串;虽然你可能更喜欢走这条路 - 但这是一个更好的习惯,长期获得,然后你不需要考虑价值是否已被消毒。