your book is too old, it is probabaly based on .NET BETA1. See an example for batch-updating using SqlCommandBuilder:Building a Fully Functional DataGrid
http://www.dotnetjunkies.com/tutorials.aspx?tutorialid=333创建功能完备的DataGrid
http://www.ccw.com.cn/htm/center/prog/02_5_27_2.asp

解决方案 »

  1.   

    your book is too old, not VS.NET
      

  2.   

    再麻烦您一下,那么就是说现在不用DataSetCommand了?比如只对SQL数据库,就直接用SQLCommang就行了,不过我还是认为用dataSet去更新数据库好一些.
    哎,我都给搞糊涂了
      

  3.   

    you can use SqlDataAdapter + DataSet
      

  4.   

    这是我的一个例子,由于我用的是Oracle DB, 所以你要作一些相应的改动,例如:把OracleDataAdapter 改为SqlDataAdapter;
    希望这段代码对你有点用。private void AddB_Click(object sender, System.EventArgs e)
    {
    string lInsertSql = "insert into test(testid, testname) values(:lTestId, :lTestName)";
    string lSqlStr    = "select * from test";
    int    lTestId    = 0;
    OracleConnection  lConnection = null;
    OracleCommand     lCommand    = null;
    OracleTransaction lTran       = null;
    OracleDataReader  lDataR      = null;
    OracleDataAdapter lDataA      = null;
    OracleCommandBuilder lCBuilder= null;
    DataSet           lDataSet    = null;
    DataRow           lNewRow    = null; try 
    {
    lConnection = new OracleConnection(gConnStr);

        lConnection.Open(); lCommand = lConnection.CreateCommand();
    lCommand.CommandText = "select testid_sq.nextval seq from dual";
    lCommand.CommandType = CommandType.Text;
    lDataR = lCommand.ExecuteReader();
    lDataR.Read();
    lTestId = (int) lDataR.GetInt32(0);
    lDataR.Close();
                        
        lDataA    = new OracleDataAdapter(lSqlStr, lConnection);
        lCBuilder = new OracleCommandBuilder(lDataA);
        lDataA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
        lDataSet = new DataSet();
        lDataA.Fill(lDataSet, "Test");
        lNewRow = lDataSet.Tables["Test"].NewRow();
        lNewRow["testid"]   = lTestId;
        lNewRow["testname"] = TestName_TB.Text.Trim();
        lNewRow["testdate"] = DateTime.Now;
        lDataSet.Tables["Test"].Rows.Add(lNewRow);
        lDataA.Update(lDataSet, "Test");         /*
                        lTran = lConnection.BeginTransaction();
    lCommand.Transaction = lTran;
    lCommand.CommandText = lInsertSql;
    lCommand.CommandType = CommandType.Text;
    lCommand.Parameters.Add(new OracleParameter("lTestId", OracleType.Number)).Value = lTestId;
    lCommand.Parameters.Add(new OracleParameter("lTestName", OracleType.VarChar)).Value = TestName_TB.Text;
    lCommand.ExecuteNonQuery(); lTran.Commit();
    */
    lConnection.Close();
    Mesg.Text = "Insert success !";
    }
    catch (OracleException ex) 
    {
    Mesg.Text = ex.Message.ToString();
    }
    }