【问题标题】:OleDB INSERT command errorOleDB INSERT 命令错误
【发布时间】:2013-01-27 13:06:16
【问题描述】:

我有一个数据库(我使用 MS ACCESS)我有这个插入代码,我可以读取数据但写入时出错,我按照说明进行操作但它不起作用 这是我的代码

OleDbConnection con = new OleDbConnection(@" provider=Microsoft.ace.Oledb.12.0; data source=\\sisc-erelim\4_Printing\VTDB\DB\VirginiTEADB2.accdb; Persist Security Info=False");

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                OleDbCommand cmd = new OleDbCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + "VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')";
                cmd.Parameters.AddWithValue("@Username", textBox1.Text);
                cmd.Parameters.AddWithValue("@Password", textBox2.Text);
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                textBox1.Text = ex.ToString();
            }

我总是遇到这个错误,

System.Data.OleDb.OleDbException: 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.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   at VirginiTEAcorp.Form3.button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\12-014s\My Documents\applications\Database\WindowsFormsApplication1\Form3.cs:line 34

【问题讨论】:

  • 调试的时候,调用ExecuteNonQuery()之前cmd.CommandText的值是多少?

标签: c# sql winforms ms-access oledb


【解决方案1】:

尝试改变这种方式

 cmd.CommandText = "INSERT INTO Accountstbl (Username, Password) VALUES (@Username,@Password)";

【讨论】:

    【解决方案2】:

    插入语句中需要一个空格:

    ssword)" + "VALUES ('" 
    

    例如,在您的语句中,您在不留空格的情况下进行了连接。

    应该是:

    ssword)" + " VALUES ('" 
    

    例如。

    【讨论】:

      【解决方案3】:

      您定义了 @Username@Password 参数,但您从未在 sql 命令中使用过。

      怎么样?

      cmd.CommandText = "INSERT INTO Accountstbl (Username, [Password]) VALUES (@Username, @Password)";
      cmd.Parameters.AddWithValue("@Username", textBox1.Text);
      cmd.Parameters.AddWithValue("@Password", textBox2.Text);
      cmd.Connection = con;
      con.Open();
      cmd.ExecuteNonQuery();
      

      您还应该在您的 sql 命令(如 [Password])中使用方括号中的 Password,因为它是 MS Access 中的 reserved keyword

      如果你不这样做,可能会导致类似的错误;

      关键字“密码”附近的语法不正确

      【讨论】:

      • @AlfredSanz 很高兴听到这个消息。
      【解决方案4】:

      你可以拥有这个:

      cmd.CommandText = "INSERT INTO Accountstbl (Username, [Password]) VALUES (@Username,@Password)";
                  cmd.Parameters.AddWithValue("@Username", textBox1.Text);
                  cmd.Parameters.AddWithValue("@Password", textBox2.Text);
      

      我希望这会奏效。

      振作起来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多