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

请您看一下表格结构。看来,表格字段不匹配。

例如:如果您有一个 auto 列并且您向该列添加了一个值,它将引发异常。此外,即使表列匹配,也要检查数据类型和最大长度。

希望这能解决。

干杯

于 2012-09-26T18:11:40.937 回答
0

OleDbCommandBuilder不擅长为具有与 PSQL 或 TSQL 不同的语法要求的数据库系统(如 Access)构建语句。我会在生成后添加一个断点CommandBuilder并查看它生成的 SQL 以查看它是否是 Access 的正确语法。

您最好自己构建 INSERT 语句,而不是假设命令构建器会为您正确构建它。

于 2012-09-26T18:15:08.773 回答