INSERT INTO语句语法错误.净c#

本文关键字:错误 语法 INTO 语句 INSERT | 更新日期: 2023-09-27 18:16:02

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

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

Data.OleDb。OleDbException (0x80040E14): INSERT INTO语法错误声明。在System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult人力资源)System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult (tagDBPARAMSdbParams Object&executeResult)System.Data.OleDb.OleDbCommand.ExecuteCommandText (Object&executeResult)System.Data.OleDb.OleDbCommand.ExecuteReaderInternal (CommandBehavior行为,字符串方法)System.Data.OleDb.OleDbCommand.ExecuteNonQuery ()createAcc。btnCreateAccount_Click(对象发送方,EventArgs e) ine: ' ' Visual Studio的文档2015 ' ' OneStopFurniture ' createAcc.aspx.cs网站: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;
    }
}
谁能告诉我我忽略了什么?在这一点上,我完全不知所措。

谢谢。

INSERT INTO语句语法错误.净c#

列列表中缺少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)";

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

直接错误是由单词Password引起的。这是MS-Access中保留的关键字。用方括号括起来

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

修复此错误后,您还需要添加列UserState(或任何调用),因为您已经为它添加了一个参数。

请记住,在OleDb中参数是位置的。这意味着第一个字段接收来自第一个参数的值,无论您使用的是什么名称,因此缺少字段或反转集合中参数的位置可能会导致非常难以发现的错误。在这里再检查一遍。