回 帖 发 新 帖 刷新版面

主题:为何提示insert语法有错

意图在DataGrid中新增记录并在点击"插入"按钮后更新数据库,但系统提示'Insert语法有错',看了半天也不知道错在哪里,麻烦大家帮我看看.

private void DataGridTest_Load(object sender, System.EventArgs e)
{
    string strOpen="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/VisualStudio Projects/WinForm/Test.mdb";
    string strQuery="select * from users";
    con=new OleDbConnection(strOpen);
    ada=new OleDbDataAdapter(strQuery,con);
    cmd=new OleDbCommandBuilder(ada);
    con.Open();
    ds=new DataSet();
    ada.Fill(ds);
    dbg.DataSource=ds.Tables[0];

}
private void btnInsert_Click(object sender, System.EventArgs e)
{
    if(ds.HasChanges())
    {
    try
    {
        ada.Update(ds);
        MessageBox.Show("已插入!");
    }
    catch(OleDbException ex)
    {
        MessageBox.Show(ex.Message);
    }
    }
}

回复列表 (共3个回复)

沙发

没有为DataAdapter设置Insert语句啊。
要自动生成语句就用OleDbCommandBuilder。

帮助文档中的类子:

public static DataSet SelectOleDbSrvRows(string myConnection, string mySelectQuery, string myTableName)
{
   OleDbConnection myConn = new OleDbConnection(myConnection);
   OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
   myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
   OleDbCommandBuilder cb = new OleDbCommandBuilder(myDataAdapter);

   myConn.Open();

   DataSet ds = new DataSet();
   myDataAdapter.Fill(ds, myTableName);

   //code to modify data in DataSet here

   //Without the OleDbCommandBuilder this line would fail
   myDataAdapter.Update(ds, myTableName);

   myConn.Close();

   return ds;
}

板凳


我不是用了OleDbCommandBuilder了吗?

3 楼

字段名用了关键字,加上下面两句就行了:
cmd.QuotePrefix="[";
cmd.QuoteSuffix="]";

我来回复

您尚未登录,请登录后再回复。点此登录或注册