最近开发一个项目时,遇到这样一个问题:
数据库表结构如下:
  regio(regioid varchar,desc varchar)
代码如下:
           dtGet.EndInit();
          OleDbDataAdapter da = new OleDbDataAdapter();
           da.SelectCommand = new OleDbCommand("select top 1 * from(select regioID,[DESC] from [regio]) as regio", odConn);
           //da.InsertCommand = new OleDbCommand("Insert into regio(regioID,[DESC]) values(?,?)",odConn);            OleDbCommandBuilder odCb = new OleDbCommandBuilder(da);
            da.UpdateCommand = odCb.GetUpdateCommand();
           da.InsertCommand = odCb.GetInsertCommand();
            da.DeleteCommand = odCb.GetDeleteCommand();
            //da.UpdateCommand.CommandText = "UPDATE regio SET regioID = ?, [DESC] = ? WHERE ((regioID = ?) AND ((? = 1 AND [DESC] IS NULL) OR ([DESC] = ?)))";
            //da.InsertCommand.CommandText = "INSERT INTO regio(regioID,[DESC]) VALUES(@regioID,@[DESC])";
            //da.DeleteCommand.CommandText = "DELETE FROM regio WHERE ((regioID = ?) AND ((? = 1 AND [DESC] IS NULL) OR ([DESC] = ?)))";            da.Update(this.dtGet.Tables[0]);
更新操作始终不能保存到数据库中,请各位指点

解决方案 »

  1.   

    跟踪下代码首先把你组合好的最后SQL放到ACC里面试下报错不.入过不报错WHERE条件有问题
      

  2.   

    DataSet dataSet = new DataSet();    using (OleDbConnection connection =
                   new OleDbConnection(connectionString))
        {
            connection.Open();
            OleDbDataAdapter dataAdapter =
                new OleDbDataAdapter();
            dataAdapter.SelectCommand =
                new OleDbCommand(queryString, connection);
            OleDbCommandBuilder commandBuilder =
                new OleDbCommandBuilder(dataAdapter);        dataAdapter.Fill(dataSet);        // Code to modify data in the DataSet here.        //Without the OleDbCommandBuilder this line would fail.
            dataAdapter.Update(dataSet);
        }
        return dataSet;
      

  3.   

    补充一点,运行时总报 Insert 语法错误,因为基本选择添加记录,主要是因为 DESC 保留字问题,OleDbCommandBuilder构造出来的都是("insert into regio(regioID,DESC) values(?,?)"),而不能出现这样的代码:("insert into regio(regioID,[DESC]) values(?,?)不能更新到数据库,用其他表时都正常
      

  4.   

    刚刚说错了,DataTable要调用方法AcceptChanges,即dt.AcceptChanges();
      

  5.   

    命令要显示增加参数并赋值的,例:
    da.UpdateCommand.Parameters.Add("@regioID", OleDbType.VarChar, 15).Value = "123456";