我可以在SQLiteCommand中使用DBNull.Value吗?

时间:2014-10-07 16:39:16

标签: c# sqlite ado.net

让我们想想下一个情况,我正在使用ADO.NET Data Provider for SQLite,并希望通过他的名字和电子邮件从电子邮件中选择一个用户(电子邮件是NULL)。

using (var cmd = new SQLiteCommand(conn))
{
   cmd.CommandText = "SELECT UserId FROM User WHERE Name=@Name and Email=@Email";
   cmd.Parameters.AddWithValue("Name", userName);
   cmd.Parameters.AddWithValue("Email", ((object)userEmail) ?? DBNull.Value);
   var user = (int?)cmd.ExecuteScalar() ?? 0;
}

结果我无法获得现有用户。 问题是:我可以将DBNull.Value与SQLiteCommand一起使用吗?

1 个答案:

答案 0 :(得分:3)

你最终得到的= NULL无效,因为没有任何东西等于null。

... WHERE Name=@Name and (Email=@Email or @Email IS NULL)

怎么样?