ASP.NET数据库错误
-
21-12-2019 - |
题
我正在尝试在线遵循教程,我已经完全遵循了步骤,但是在尝试写入数据库时,我一直在收到错误。
这是一个简单形式的代码
@{
var name = string.Empty;
var email = string.Empty;
var subject = string.Empty;
var message = string.Empty;
if (IsPost){
name = Request["txtName"];
email = Request["txtEmail"];
subject = Request["txtSubject"];
message = Request["txtMessage"];
var db = Database.Open("FormAndDataDB");
db.Execute("INSERT INTO ContactLog (Name, Email, Subject, Message, DateSent) " +
"VALUES (@0, @1, @2, @3, @4)", name, email, subject, message, DateTime.Now);
}
}
<doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form action="contact.cshtml" method="POST">
<p>
<label for="txtName">Name:</label><br />
<input type="text" name="txtName" id="txtName" value="@name"/>
</p>
<p>
<label for="txtEmail">Email:</label><br />
<input type="text" name="txtEmail" id="txtEmail" value="@email" />
</p>
<p>
<label for="txtSubject">Subject:</label><br />
<input type="text" name="txtSubject" id="txtSubject" value="@subject" />
</p>
<p>
<label for="txtMessage">Message:</label><br />
<textarea name="txtMessage" id="txtMessage" cols="40" rows="10" >@message</textarea>
</p>
<p>
<input type="submit" value="send" />
</p>
</form>
</body>
</html>
.
以下是在执行SQL INSERT语句的尝试时获得Visual Studio的错误:
"An exception of type 'System.Data.SqlServerCe.SqlCeException' occurred in System.Data.SqlServerCe.dll but was not handled in user code"
.
这是从SQL返回的错误文本,并在网页上显示:
"The column cannot contain null values. [ Column name = ID,Table name = ContactLog ]"
.
我完全填写了表格
解决方案
尽管存在问题的错误,但问题似乎是您有一个表(ContactLog),列(ID)包含没有null属性的列。您正在尝试在没有所述列中的值的情况下插入一行,并且导致此错误。
要将其固定到[id]列中,或将标识属性设置为true,而不是在所述列上的false,并允许它自动/自动增量。
我的假设是即使您修复了插入语句的语法,您仍无法正常处理插入。
其他提示
你有五列,但只有3个值。
您的陈述是
INSERT INTO ContactLog (Name, Email, Subject, Message, DateSent)
VALUES (@0, @1, @3)
.
发生在@ 2和@ 4?
也许你需要
db.Execute("INSERT INTO ContactLog (Name, Email, Subject, Message, DateSent) "+
"VALUES (@0, @1, @2, @3, @4)",
name, email, subject, message, DateTime.Now);
. 不隶属于 StackOverflow