1

皆さん、

私はこれにまったく慣れていません...私はwinformからすでにデータソースであるアクセスデータベースに自分のレコードを追加したかったのですが、次のようなエラーが発生しました:

OleDBException は処理されず、「INSERT INTO ステートメントの構文エラー」と表示されます。

次の行を示します。

da.Update(ds1, "Table1");

私のコーディングは次のとおりです。

        int MaxRows = 0;
        int inc = 0;

        private void Form2_Load(object sender, EventArgs e)
        {
            con = new System.Data.OleDb.OleDbConnection();
            ds1 = new DataSet();

            con.ConnectionString = " Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:/Documents and Settings/user/My Documents/anchu.accdb";
            string sql = "SELECT * From Table1";
            da = new System.Data.OleDb.OleDbDataAdapter(sql, con);

            con.Open();

            da.Fill(ds1, "Table1");
            //NavigateRecords();

            con.Close();
            //con.Dispose();
        }
        /*private void NavigateRecords()
        {
            DataRow drow = ds1.Tables["Table1"].Rows[0];

            textBox1.Text = drow.ItemArray.GetValue(0).ToString();
            textBox2.Text = drow.ItemArray.GetValue(1).ToString();
            textBox3.Text = drow.ItemArray.GetValue(2).ToString();
            textBox4.Text = drow.ItemArray.GetValue(3).ToString();





        }*/


        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            System.Data.OleDb.OleDbCommandBuilder cb;
            cb = new System.Data.OleDb.OleDbCommandBuilder(da);

            DataRow drow = ds1.Tables["Table1"].NewRow();
            drow[0] = textBox1.Text;
            drow[1] = textBox2.Text;
            drow[2] = textBox3.Text;
            drow[3] = textBox4.Text;

            ds1.Tables["Table1"].Rows.Add(drow);

            MaxRows = MaxRows + 1;
            inc = MaxRows - 1;

            da.Update(ds1, "Table1");

            MessageBox.Show("Entry Added");


        }
    }
}
4

2 に答える 2

2

テーブルの構造をご覧ください。テーブルのフィールドが一致しなかったようです。

例:自動列があり、その列に値を追加すると、例外がスローされます。さらに、テーブルの列が一致している場合でも、データ型と最大長も確認してください。

これが解決することを願っています。

乾杯

于 2012-09-26T18:11:40.937 に答える
0

OleDbCommandBuilderPSQLやTSQLとは異なる構文要件を持つAccessなどのDBシステムのステートメントを作成するのは得意ではありません。を生成した後にブレークポイントを追加し、生成CommandBuilderされたSQLを調べて、Accessの正しい構文であるかどうかを確認します。

コマンドビルダーがINSERTステートメントを正しく作成すると想定するよりも、自分でINSERTステートメントを作成する方がよい場合があります。

于 2012-09-26T18:15:08.773 に答える