值设置正确但使用时为null

时间:2014-03-17 18:01:52

标签: c# sql variables null

好的,我已经能够从一个类Login中检索一个值,并且能够将它存储在另一个类Main中的公共变量userID中。我知道该值已正确设置,因为它在我的应用程序的主窗口上填充标签,该标签使用Main作为其类。该值还用于每秒轮询一个数据库,但是,这仅在我使用非参数化SQL查询时才有效。如果我尝试使用参数化查询,我会开始看到查询将值视为null的问题。

此查询有效,这很糟糕:

SqlCommand cmd_getMessage = new SqlCommand("SELECT message, sender_ID, date_time FROM Message WHERE recipient_ID='" + userID + "'", SQL);

虽然这不是:

SqlCommand cmd_getMessage = new SqlCommand("SELECT message, sender_id, date_time FROM Message WHERE recipient_id=@recipient_id", SQL);
cmd_getMessage.Parameters.AddWithValue("@recipient_id", userID);

值得注意的是,这些查询与公共变量属于同一类。如果我尝试从另一个类访问该变量,然后在SQL查询中使用它,那么即使是未参数化的查询也无法正常工作

希望这是您可以使用的足够信息。谢谢你的时间。

1 个答案:

答案 0 :(得分:4)

我的猜测是某个时刻的userID为null。

尝试将参数行更改为:

cmd_getMessage.Parameters.AddWithValue("@recipient_id", userID ?? "");

并查看是否仍然出现错误。这将使两个查询表现相同。