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
http://www.dotnetjunkies.com/tutorials.aspx?tutorialid=333创建功能完备的DataGrid
http://www.ccw.com.cn/htm/center/prog/02_5_27_2.asp
哎,我都给搞糊涂了
希望这段代码对你有点用。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();
}
}