尝试/捕获方法错误 ASP.NET

本文关键字:错误 ASP NET 方法 尝试 | 更新日期: 2023-09-27 17:57:10

我正在努力使这项工作。我希望它在插入后检查记录是否存在,但它总是返回错误:第 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";
        }

编辑:刚刚删除了数据类型。

尝试/捕获方法错误 ASP.NET

不必

在插入语句中包含数据类型。跳过它们。

尝试

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)";
不要

将类型放在您的值中。

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 )";

为了使这项工作,您需要从sqlstring变量中删除数据类型。

我可能会切换到使用存储过程,然后加载参数,因为这基本上就是您在这里使用 addwithvalue 命令所做的

此外,cmd.ExecuteNonQuery()将返回一个 int 来告诉您它已成功添加。 如果它返回 1,您就知道它是完整的。http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx

首先,在SQL中删除您的类型,您不需要它们(正如其他答案所建议的那样)

其次,通过以下方式向查询添加一个参数:

cmd.Parameters.AddWithValue("@bookid", Request.Form["bookid"]);

您不确保 Request.Form["bookid"] 不为空,这将导致您当前的问题

删除值列表中的数据类型。 你不需要它们。