使用 DataAdapter+DataSet来给多个数据表添加多条数据如何做分布式处理?
BeginTransaction()
希望有详细的解答
---------------------------
出错代码!
--------------------------- OleDbConnection Dataconn = new OleDbConnection(global::WindowsApplication1.Properties.Settings.Default.nodenetConnectionString.ToString());
OleDbTransaction tracsaction = null; try
{
Dataconn.Open();
tracsaction = Dataconn.BeginTransaction();
OleDbDataAdapter DataAdapterClient = new OleDbDataAdapter("select C_name,C_idNo,C_tel,C_ticketNo,C_ticketPrice,C_fuJia,C_ETNo,ticketID from client where id=0", Dataconn);
OleDbCommandBuilder DataBuildClient = new OleDbCommandBuilder(DataAdapterClient);
DataSet DataSetClient = new DataSet();
DataAdapterClient.Fill(DataSetClient, "client");
for (int i = 0; i < ClientInfo.RowCount; i++)
{
DataRow ThisRowClient = DataSetClient.Tables["client"].NewRow();
ThisRowClient["C_name"] = ClientInfo.Rows[i].Cells[1].Value.ToString();
......
ThisRowClient["ticketID"] = TicketIdNo;
DataSetClient.Tables["client"].Rows.Add(ThisRowClient);
}
DataAdapterClient.Update(DataSetClient, "client");
OleDbDataAdapter DataAdapterFlightNo = new OleDbDataAdapter("select T_flightNo,T_aircom,T_class,T_code,T_carrier,T_boardPoint,T_offpoint,T_departureDate,T_departureTime,T_arrivalTime,TicketId from flightNo where T_id=0", Dataconn); OleDbCommandBuilder DataBuildFlightNo = new OleDbCommandBuilder(DataAdapterFlightNo);
DataSet DataSetFlightNo = new DataSet();
DataAdapterFlightNo.Fill(DataSetFlightNo, "flightNo");
for (int i = 0; i < FlightNo.RowCount; i++)
{
DataRow ThisRowFlightNo = DataSetFlightNo.Tables["flightNo"].NewRow();
ThisRowFlightNo["T_flightNo"] = FlightNo.Rows[i].Cells[1].Value.ToString();
......
ThisRowFlightNo["TicketId"] = TicketIdNo;
XingChengDui = XingChengDui + FlightNo.Rows[i].Cells[3].Value.ToString() + "-" + FlightNo.Rows[i].Cells[4].Value.ToString() + " "; DataSetFlightNo.Tables["flightNo"].Rows.Add(ThisRowFlightNo);
}
DataAdapterFlightNo.Update(DataSetFlightNo, "flightNo"); OleDbDataAdapter DataAdapter = new OleDbDataAdapter("select pnr,ChuPiaoYuan,SongPiaoYuan,ShiFouShouKuan,Pnr_bak,TicketId,TianJiaShiJian,XingCheng,SuoShuRen,JieDanYuan,FanDian,TicketType from TicketInfo where id=0", Dataconn);
OleDbCommandBuilder DataBuild = new OleDbCommandBuilder(DataAdapter); DataSet ThisDataSet = new DataSet();
DataAdapter.Fill(ThisDataSet, "TicketInfo");
DataRow ThisRow = ThisDataSet.Tables["TicketInfo"].NewRow();
ThisRow["pnr"] = this.pnr.Text.ToString();
......
ThisRow["TicketType"] = this.ticketType.Text.ToString();
ThisDataSet.Tables["TicketInfo"].Rows.Add(ThisRow);
DataAdapter.Update(ThisDataSet, "TicketInfo");
tracsaction.Commit();
PnrInfo.Clear();
clearList();
} //MessageBox.Show(global::WindowsApplication1.Properties.Settings.Default.nodenetConnectionString.ToString());
}
catch (Exception ee)
{
tracsaction.Rollback();
MessageBox.Show(ee.ToString());
}
finally
{
Dataconn.Close();
}---------------------------
出错信息!
---------------------------
System.InvalidOperationException: 如果分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化。 在 System.Data.OleDb.OleDbConnectionInternal.ValidateTransaction(OleDbTransaction transaction, String method) 在 System.Data.OleDb.OleDbConnection.ValidateTransaction(OleDbTransaction transaction, String method) 在 System.Data.OleDb.OleDbCommand.ValidateConnectionAndTransaction(String method) 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) 在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) 在 System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) 在 WindowsApplication1.nodeTi.save_info_Click(Object sender, EventArgs e) 位置 E:\net 开发\ACCESSnodeTicket\WindowsApplication1\Form1.cs:行号 343
---------------------------
确定
---------------------------
BeginTransaction()
希望有详细的解答
---------------------------
出错代码!
--------------------------- OleDbConnection Dataconn = new OleDbConnection(global::WindowsApplication1.Properties.Settings.Default.nodenetConnectionString.ToString());
OleDbTransaction tracsaction = null; try
{
Dataconn.Open();
tracsaction = Dataconn.BeginTransaction();
OleDbDataAdapter DataAdapterClient = new OleDbDataAdapter("select C_name,C_idNo,C_tel,C_ticketNo,C_ticketPrice,C_fuJia,C_ETNo,ticketID from client where id=0", Dataconn);
OleDbCommandBuilder DataBuildClient = new OleDbCommandBuilder(DataAdapterClient);
DataSet DataSetClient = new DataSet();
DataAdapterClient.Fill(DataSetClient, "client");
for (int i = 0; i < ClientInfo.RowCount; i++)
{
DataRow ThisRowClient = DataSetClient.Tables["client"].NewRow();
ThisRowClient["C_name"] = ClientInfo.Rows[i].Cells[1].Value.ToString();
......
ThisRowClient["ticketID"] = TicketIdNo;
DataSetClient.Tables["client"].Rows.Add(ThisRowClient);
}
DataAdapterClient.Update(DataSetClient, "client");
OleDbDataAdapter DataAdapterFlightNo = new OleDbDataAdapter("select T_flightNo,T_aircom,T_class,T_code,T_carrier,T_boardPoint,T_offpoint,T_departureDate,T_departureTime,T_arrivalTime,TicketId from flightNo where T_id=0", Dataconn); OleDbCommandBuilder DataBuildFlightNo = new OleDbCommandBuilder(DataAdapterFlightNo);
DataSet DataSetFlightNo = new DataSet();
DataAdapterFlightNo.Fill(DataSetFlightNo, "flightNo");
for (int i = 0; i < FlightNo.RowCount; i++)
{
DataRow ThisRowFlightNo = DataSetFlightNo.Tables["flightNo"].NewRow();
ThisRowFlightNo["T_flightNo"] = FlightNo.Rows[i].Cells[1].Value.ToString();
......
ThisRowFlightNo["TicketId"] = TicketIdNo;
XingChengDui = XingChengDui + FlightNo.Rows[i].Cells[3].Value.ToString() + "-" + FlightNo.Rows[i].Cells[4].Value.ToString() + " "; DataSetFlightNo.Tables["flightNo"].Rows.Add(ThisRowFlightNo);
}
DataAdapterFlightNo.Update(DataSetFlightNo, "flightNo"); OleDbDataAdapter DataAdapter = new OleDbDataAdapter("select pnr,ChuPiaoYuan,SongPiaoYuan,ShiFouShouKuan,Pnr_bak,TicketId,TianJiaShiJian,XingCheng,SuoShuRen,JieDanYuan,FanDian,TicketType from TicketInfo where id=0", Dataconn);
OleDbCommandBuilder DataBuild = new OleDbCommandBuilder(DataAdapter); DataSet ThisDataSet = new DataSet();
DataAdapter.Fill(ThisDataSet, "TicketInfo");
DataRow ThisRow = ThisDataSet.Tables["TicketInfo"].NewRow();
ThisRow["pnr"] = this.pnr.Text.ToString();
......
ThisRow["TicketType"] = this.ticketType.Text.ToString();
ThisDataSet.Tables["TicketInfo"].Rows.Add(ThisRow);
DataAdapter.Update(ThisDataSet, "TicketInfo");
tracsaction.Commit();
PnrInfo.Clear();
clearList();
} //MessageBox.Show(global::WindowsApplication1.Properties.Settings.Default.nodenetConnectionString.ToString());
}
catch (Exception ee)
{
tracsaction.Rollback();
MessageBox.Show(ee.ToString());
}
finally
{
Dataconn.Close();
}---------------------------
出错信息!
---------------------------
System.InvalidOperationException: 如果分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化。 在 System.Data.OleDb.OleDbConnectionInternal.ValidateTransaction(OleDbTransaction transaction, String method) 在 System.Data.OleDb.OleDbConnection.ValidateTransaction(OleDbTransaction transaction, String method) 在 System.Data.OleDb.OleDbCommand.ValidateConnectionAndTransaction(String method) 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) 在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) 在 System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) 在 WindowsApplication1.nodeTi.save_info_Click(Object sender, EventArgs e) 位置 E:\net 开发\ACCESSnodeTicket\WindowsApplication1\Form1.cs:行号 343
---------------------------
确定
---------------------------
其它的用法,就和你的代码一样的。。