-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() メソッドによって生成されたコードにあります。Sql Server に何が送信されているかを確認できるように、例外の SqlString プロパティを提供していただけると助かります。

最初に私に飛びついたあなたのコードの問題は、Select *. *aではない aを使用するほとんどすべてのクエリはCount(*)、本番コードで使用する必要のあるクエリではありません。それらは、Management Studio から実行される 1 回限りのクエリで使用されますが、プログラムまたは他のクエリによって使用されるクエリでは使用されません。

この場合、SELECT *クエリが生成する列の数を制御することはできません。後で誰かが来て列を追加すると、突然、アプリケーションの動作が悪くなり始めます。これは、必要な列が 4 つではなく 3 つだけであるためです。コードから実行される SELECT ステートメントでプロパティ リストを使用します。

于 2012-11-29T21:56:25.510 に答える