c# - INSERT INTO 语句 ASP.Net C# 中的语法错误

标签 c# sql asp.net ms-access

首先,是的,我知道还有其他几个问题。我已经审查并尝试了其中提出的不同解决方案;但是,当我单击提交按钮运行该函数时,我仍然收到“语法错误 INSERT INTO 语句”消息。

我正在运行 VS 2015 和 Access 2010 数据库。完整错误信息如下:

Data.OleDb.OleDbException (0x80040E14): Syntax error in INSERT INTO statement. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at createAcc.btnCreateAccount_Click(Object sender, EventArgs e) in e:\Documents\Visual Studio 2015\WebSites\OneStopFurniture\createAcc.aspx.cs:line 43

我的按钮处理程序代码如下:

protected void btnCreateAccount_Click(object sender, EventArgs e)
{
    connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:\\Documents\\Visual Studio 2015\\WebSites\\OneStopFurniture\\App_Data\\OneStopFur.accdb";
    string InsertQuery;
    try
    {
        connection.Open();
        OleDbCommand cmdInsert = new OleDbCommand();
        cmdInsert.Connection = connection;

        InsertQuery= "INSERT INTO [userInfo] (
           userName, password, firstName, lastName, userAddress, userCity, userZip, userPhone, userEmail
        ) VALUES (
           @userName, @password, @firstName, @lastName, @userAddress, @userCity, @userState, @userZip, @userPhone, @userEmail
        )";
        cmdInsert.Parameters.AddWithValue("@userName", txtUserName.Text);
        cmdInsert.Parameters.AddWithValue("@password", txtPassword.Text);
        cmdInsert.Parameters.AddWithValue("@firstName", txtFirstName.Text);
        cmdInsert.Parameters.AddWithValue("@lastName", txtLastName.Text);
        cmdInsert.Parameters.AddWithValue("@userAddress", txtAddress.Text);
        cmdInsert.Parameters.AddWithValue("@userCity", txtCity.Text);
        cmdInsert.Parameters.AddWithValue("@userState", txtState.Text);
        cmdInsert.Parameters.AddWithValue("@userZip", txtZip.Text);
        cmdInsert.Parameters.AddWithValue("@userPhone", txtPhone.Text);
        cmdInsert.Parameters.AddWithValue("@userEmail", txtEmail.Text);

        cmdInsert.CommandText = InsertQuery;
        cmdInsert.ExecuteNonQuery();
        lblConfirm.Visible = true;
        lblConfirm.Text = "Account creation successful.";
    }
    catch (Exception ex)
    {
        lblConfirm.Visible = true;
        lblConfirm.Text = "Unable to create" + ex;

    }
}

有人可以告诉我我在这里忽略了什么吗?在这一点上,我完全迷失了方向。

谢谢。

最佳答案

列列表中缺少 UserState

InsertQuery= "INSERT INTO [userInfo]
            ([userName], [password], [firstName], [lastName], [userAddress], [userCity], [userState], [userZip], [userPhone], [userEmail])
     VALUES(@userName, @password, @firstName, @lastName, @userAddress, @userCity, @userState, @userZip, @userPhone, @userEmail)";

最好的做法是引用所有内容以避免与关键字冲突。

关于c# - INSERT INTO 语句 ASP.Net C# 中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32953772/

相关文章:

c# - EF Core 通过完全替换断开集合导航属性的更新

mysql - InnoDB 上的一个简单的 INSERT 查询花费太多

MySQL 查询边缘案例 - 当只有一种数据类型时行号失败

c# - 无法启用此约束,因为并非所有值都具有相应的父值

c# - Windows Phone 8 上的 X509Certificate2 到 X509Certificate

c# - 使用 Json.net 将 json 对象反序列化为 SQL DB

c# - Crystal Report 中加载报告失败

c# - 尝试通过 C# 在数据库上进行选择时出现 IndexOutOfRangeException

c# - 从 Web API url 中删除 "api"前缀

asp.net - 如何调用 URL 末尾带有点的 Web API 操作?