【问题标题】:Error SQL INSERT INTO with Odbc Command C#使用 Odbc 命令 C# 的错误 SQL INSERT INTO
【发布时间】:2022-03-19 19:02:35
【问题描述】:

场景:
我想将文本框中的数据输入到基于 microsoft 数据库 (.mdb) 的数据库中 我已经搜索并找到了很好的线索,我的结果就在这里。
下面的代码在命令按钮点击事件中:

using (OdbcConnection conn= new OdbcConnection())
{
    conn.ConnectionString = @"Driver={Microsoft Access Driver (*.mdb)};" + 
            "Dbq=C:\\BlaBlaBla.mdb;Uid=Admin;Pwd=;";
    conn.Open();

    using (OdbcCommand cmd = new OdbcCommand(
         "INSERT INTO TABLENAME (FIELD1,FIELD2,FIELD3) VALUES ('" + txtFIELD1Input.Text + "','" + txtFIELD2Input.Text + "','" + txtFIELDInput.Text + "' )", conn))
    {
        cmd.ExecuteNonQuery();
    }

    conn.Close();
}

当我点击命令按钮时,我得到了不友好的异常

错误 [42S02] [Microsoft][ODBC Microsoft Access 驱动程序] 找不到 输出表“TABLENAME”。

当我插入 cmd.ExecuteNonQuery 时发生了这种情况。如果我没有插入它,我的表目标当然不会发生任何事情。
那么我在该代码中犯了什么错误?我该怎么办?

【问题讨论】:

  • 对我来说似乎很友好。没有TABLENAME这样的表。
  • 但是我已经使用名为 TABLENAME 的表设置了 Database.mdb,并且我的项目文件夹中也有一个 Database.mdb,但我没有从 DataSources 制作 DataSet
  • 在更正代码时,请使用 占位符。这将避免 [意外或恶意] 用户输入可能导致的错误。

标签: c# odbc


【解决方案1】:
    "INSERT INTO TABLENAME (FIELD1,FIELD2,FIELD3) VALUES ('" + txtFIELD1Input.Text +    "','" + txtFIELD2Input.Text + "','" + txtFIELDInput.Text + "' )", myConnection))

改成

   "INSERT INTO TABLENAME (FIELD1,FIELD2,FIELD3) VALUES ('" + txtFIELD1Input.Text + "','" + txtFIELD2Input.Text + "','" + txtFIELDInput.Text + "' )", Conn))

您将 Conn 定义为连接字符串,而不是“myConnection”

【讨论】:

  • 对不起,我忘了编辑问题代码。实际上我在 INSERT 行中的连接字符串是 conn
【解决方案2】:

所以我改用 OleDbConnection 并解决了我的问题,

using (OleDbConnectionconn= new OleDbConnection())
    {
        conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\LOSERONE\Documents\DATABASE\Latihan1.mdb";
        conn.Open();

        using (OleDbCommand cmd = new OleDbCommand (
             "INSERT INTO TABLENAME (FIELD1,FIELD2,FIELD3) VALUES ('" + txtFIELD1Input.Text + "','" + txtFIELD2Input.Text + "','" + txtFIELDInput.Text + "' )", conn))
        {
            cmd.ExecuteNonQuery();
        }

        conn.Close();
    }

看来,连接数据库必须与目标数据库属性中的连接字符串相同。 有谁可以告诉我.mdb 数据库文件中的 OleDbConnection 和 OdbcConnection 有什么区别?!

【讨论】:

    【解决方案3】:

    这个问题是因为登录后sql连接的默认数据库与您的表'TABLENAME'所在的位置不同。尝试在表之前添加数据库名称,如下所示:

    INSERT INTO DBNAME..TABLENAME (FIELD1, FIELD2)
    

    【讨论】:

      【解决方案4】:

      将您的 myConnection 替换为 Conn

      【讨论】:

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