我的update方法中的OleDbException

时间:2012-11-29 21:45:25

标签: c# oledb

为什么会出现此错误?错误消息是:INSERT INTO语句中的语法错误。

我想在我的数据库中添加一条记录,但它无法正常工作。问题在哪里?

代码是:

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();
    }
}

1 个答案:

答案 0 :(得分:3)

错误在于Update()方法生成的代码,给定查询中固有的元数据以获取信息和结果。如果您向我们提供了异常的SqlString属性,那么我们可以看到发送给Sql Server的内容。

我会告诉你,你的代码首先跳出来的问题是使用Select *。几乎所有使用不是*的{​​{1}}的查询都不是您应该在生产代码中使用的查询;它们用于从Management Studio执行的一次性查询,但不用于程序或其他查询使用的查询。

在这种情况下,Count(*)允许您无法控制查询生成的列数;如果有人稍后加入并添加了一个列,那么你的应用程序突然表现得非常糟糕,因为你只需要3列,而不是4.在代码执行的任何SELECT语句中使用属性列表。