-5

为什么我有这个错误?错误消息是: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();
    }
}
4

1 回答 1

3

考虑到信息和结果查询中固有的元数据,错误在于 Update() 方法生成的代码。如果您将异常的 SqlString 属性提供给我们会有所帮助,这样我们就可以看到发送到 Sql Server 的内容。

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

在这种情况下,SELECT *您无法控制查询产生的列数;如果有人稍后加入并添加一列,您的应用程序突然开始表现不佳,因为您只需要 3 列,而不是 4 列。在从代码执行的任何 SELECT 语句上使用属性列表。

于 2012-11-29T21:56:25.510 回答