Webmatrix asp.net网页:如果已使用DB helper,则尝试保存回数据库时出错
我有一个if语句,它检查数据库中是否存在条目。 代码会正确检查电子邮件地址是否已存在,但如果电子邮件不存在,则会出现错误:Webmatrix asp.net网页:如果已使用DB helper,则尝试保存回数据库时出错,webmatrix,asp.net-webpages,Webmatrix,Asp.net Webpages,我有一个if语句,它检查数据库中是否存在条目。 代码会正确检查电子邮件地址是否已存在,但如果电子邮件不存在,则会出现错误: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference at CallSite.Target(Closure , CallSite , Object ) at ASP._Page__footer_cshtml.Exe
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding
on a null reference at CallSite.Target(Closure , CallSite , Object ) at
ASP._Page__footer_cshtml.Execute()
但是,如果我删除获取现有电子邮件的代码,这些行:
var getrecord = db.QuerySingle("Select Email from Registrations where email = @0", email);
emailexists = getrecord.email;
数据会毫无问题地保存回数据库。不确定这是否是因为我使用的是同一个Db助手
try
{
var db = Database.Open("MiniDB");
var getrecord = db.QuerySingle("Select Email from Registrations where email = @0", email);
emailexists = getrecord.email;
if (emailexists != ""){
msg = "This Email address is already registed";
saved = false;
}
else {
var insertCommand = "INSERT INTO Registrations (Email, Name, regDate) VALUES(@0, @1, @2)";
db.Execute(insertCommand, email, name, regDate);
saved = true;
}
}
catch (Exception ex)
{
msg = ex.ToString();
saved = false;
}
在WebMatrix中检索(然后测试)数据库中的值时遇到的一件事是,根据数据库中的字段,在查询数据库并将值存储在变量“”中后,和System.DBNull.Value是三种不同的东西,检查空字符串或简单的null对我来说是抛出错误的方式,与您的示例基本相同 希望我能在这方面有所帮助(这可能不是你的问题,但我知道在类似的情况下,这让我很为难,因为我以前从未见过DBNull) 这个DBNull值从数据库传递到我将字段值分配给的变量,因为它是一个会话变量,被视为一个对象。我不确定是否仍然允许将这个DBNull值存储在正则变量中(并且不转换为正则null)。此外,我相信我当时使用的是二进制数据(图像),不确定这是否会产生影响,但 最后,对于我的代码,当检查某个字段(数据库中)是否为空、null等时,我使用了类似的内容(仅使用会话变量而不是常规变量): 我希望这有帮助
if (emailexists != "" && emailexists != null && emailexists != System.DBNull.Value)
{
//code goes here.
}