【问题标题】:OleDbException error on Update method更新方法上的 OleDbException 错误
【发布时间】:2012-11-30 01:32:02
【问题描述】:

为什么会出现这个错误?错误信息是:Syntax error in INSERT INTO statement.

我想向我的数据库中添加一条记录,但它不起作用。 问题出在哪里?

代码是:

using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            OleDbDataAdapter DbDataAdabter = new OleDbDataAdapter();
            DbDataAdabter.SelectCommand = new OleDbCommand("SELECT * FROM [Phone-Book]", connection);

            OleDbCommandBuilder cb = new OleDbCommandBuilder(DbDataAdabter);
            connection.Open();
            DataRow dataRow = myDataset.Tables["salam"].NewRow();

            dataRow[1] = textBox2.Text;
            dataRow[2] = textBox3.Text;
            dataRow[3] = textBox4.Text;
            dataRow[4] = textBox5.Text;

            dataRow.EndEdit();
            myDataset.Tables["salam"].Rows.Add(dataRow);

            DbDataAdabter.Update(myDataset , "salam");

            connection.Close();
            connection.Dispose();
        }
    }

【问题讨论】:

  • 您需要在 DataAdapter 中向我们展示对 INSERT 语句的查询。
  • 你能告诉我你的表结构吗?
  • 抱歉耽搁了。 @sajanyamaha: dataRow[0] : 自动编号 dataRow[1] :text [2]: text [3]: number [4]:number
  • @KuyaJohn :我的代码没有插入语句。我必须这样做吗?我的数据库表有 5 列 [number] , [namec] , [gushi] , [tell] , [code] 它们的数据类型在上面的注释中

标签: c# oledb


【解决方案1】:

使用 DbDataAdabter.Update() 时,你必须非常小心表的数据类型,即如果它是 DB 中的 int 则将其转换然后插入:

dataRow[1]=(int) dataRow[1]+10;

还要检查是否提供了所有值,这里我没有看到任何地方提供的 dataRow[0],或者它是一个自动 ID 字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-12
    • 2018-03-25
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    相关资源
    最近更新 更多