0

我在选择语句时遇到问题。

看起来像:

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

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

请对如何重写此语句有任何想法?谢谢你。

4

1 回答 1

1

假设您的会话值已经过清理,那么您可以执行以下操作:

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

以上假设您想要 tAgTBD 为空的所有行。如果您想保留对用户 ID 的限制,您需要在两个 ORed 条件周围添加括号:

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

如果会话值没有被清理,那么您需要阅读 SQL 注入,并查看使用SqlCommand带参数而不是构造字符串;尽管无论如何您可能更愿意走这条路 - 从长远来看,这是一个更好的习惯,然后您无需考虑这些价值观是否已经过净化。

于 2011-05-31T09:04:45.630 回答