让我们想想下一个情况,我正在使用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一起使用吗?
答案 0 :(得分:3)
你最终得到的= NULL
无效,因为没有任何东西等于null。
... WHERE Name=@Name and (Email=@Email or @Email IS NULL)