我正在尝试做这项工作。我希望它在插入后检查是否存在记录,但它总是返回错误:第1行:'nvarchar'附近的语法不正确。有人能在我的宣言中向我指出我的错吗?另外如果你有更好的尝试捕捉方法,请赐教。刚刚开始编程ASP.NET
提前致谢。
protected void Page_Load(object sender, EventArgs e)
{
string connString_LibrarySystem = "Server=DEVSERVER;User ID=sa;Password=Sup3r-Us3r;Database=LibrarySystem";
string strSQL = "INSERT INTO TblBooks (bookid, booktitle, lastname, firstname, description, categoryid, dateadded, statusid, quantity, isdeleted) VALUES (@bookid, @booktitle, @lastname, @firstname, @description, @categoryid, @dateadded, @statusid, @quantity, @isdeleted)";
SqlConnection conn = new SqlConnection(connString_LibrarySystem);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd = new SqlCommand(strSQL, conn);
cmd.Parameters.AddWithValue("@bookid", Request.Form["bookid"]);
cmd.Parameters.AddWithValue("@booktitle", Request.Form["booktitle"]);
cmd.Parameters.AddWithValue("@lastname", Request.Form["lastname"]);
cmd.Parameters.AddWithValue("@firstname", Request.Form["firstname"]);
cmd.Parameters.AddWithValue("@description", Request.Form["description"]);
cmd.Parameters.AddWithValue("@categoryid", Request.Form["categoryid"]);
cmd.Parameters.AddWithValue("@dateadded", Request.Form["dateadded"]);
cmd.Parameters.AddWithValue("@statusid", Request.Form["statusid"]);
cmd.Parameters.AddWithValue("@quantity", Request.Form["quantity"]);
cmd.Parameters.AddWithValue("@isdeleted", Request.Form["isdeleted"]);
cmd.ExecuteNonQuery();
{
conn.Close();
}
statuslabel.Text = "Insert successful";
}
编辑:刚刚删除了数据类型。
答案 0 :(得分:5)
您不必在insert语句中包含数据类型。跳过它们。
尝试
string strSQL = "INSERT INTO TblBooks (bookid, booktitle, lastname, firstname, description, categoryid, dateadded, statusid, quantity, isdeleted) VALUES (@bookid, @booktitle , @lastname, @firstname, @description, @categoryid, @dateadded , @statusid , @quantity, @isdeleted)";
答案 1 :(得分:2)
不要将类型放在您的值中。
string strSQL = "INSERT INTO TblBooks (bookid, booktitle, lastname, firstname, description, categoryid, dateadded, statusid, quantity, isdeleted) VALUES (@bookid , @booktitle , @lastname , @firstname , @description , @categoryid , @dateadded , @statusid , @quantity , @isdeleted )";
答案 2 :(得分:2)
为了完成这项工作,您需要从sqlstring变量中删除数据类型。
我可能会切换到使用存储过程然后加载参数,因为这基本上就是你在这里用addwithvalue命令做的事情
同样cmd.ExecuteNonQuery()
会返回一个int来告诉你它已成功添加。如果它返回1你知道它是完整的。
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx
答案 3 :(得分:2)
首先,删除SQL中的类型,不需要它们(如其他答案所示)
其次,您可以通过以下方法向查询添加参数:
cmd.Parameters.AddWithValue("@bookid", Request.Form["bookid"]);
您不确定Request.Form [“bookid”]是否为空,这将导致您当前的问题
答案 4 :(得分:1)
删除值列表中的数据类型。你不需要它们。