我要在一个事物中执行insert和select两个操作后提交 如下:
DataSet ds = new DataSet();
OleDbConnection cn = CPub_DBConn.GetConn();
cn.Open();
OleDbTransaction stran = cn.BeginTransaction();
OleDbCommand myCommand = new OleDbCommand("insert into GRAPH_TEMP values('a')", cn);
myCommand.ExecuteNonQuery();
OleDbDataAdapter da = new OleDbDataAdapter("select NAME from GRAPH_TEMP",cn);
da.Fill(ds,"GRAPH_TEMP");
stran.Commit();
cn.Close();
报错:当分配给命令的连接处于挂起的本地事物中时,命令必须具有事物对象才能执行。该命令的transation属性尚未初始化。
请问应该怎么改我的代码啊?谢谢
DataSet ds = new DataSet();
OleDbConnection cn = CPub_DBConn.GetConn();
cn.Open();
OleDbTransaction stran = cn.BeginTransaction();
OleDbCommand myCommand = new OleDbCommand("insert into GRAPH_TEMP values('a')", cn);
myCommand.ExecuteNonQuery();
OleDbDataAdapter da = new OleDbDataAdapter("select NAME from GRAPH_TEMP",cn);
da.Fill(ds,"GRAPH_TEMP");
stran.Commit();
cn.Close();
报错:当分配给命令的连接处于挂起的本地事物中时,命令必须具有事物对象才能执行。该命令的transation属性尚未初始化。
请问应该怎么改我的代码啊?谢谢
{
SqlConnection myConnection = new SqlConnection(myConnString);
myConnection.Open(); SqlCommand myCommand = myConnection.CreateCommand();
SqlTransaction myTrans; // Start a local transaction
myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction");
// Must assign both transaction object and connection
// to Command object for a pending local transaction
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans; try
{
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
try
{
myTrans.Rollback("SampleTransaction");
}
catch (SqlException ex)
{
if (myTrans.Connection != null)
{
Console.WriteLine("An exception of type " + ex.GetType() +
" was encountered while attempting to roll back the transaction.");
}
}
Console.WriteLine("An exception of type " + e.GetType() +
" was encountered while inserting the data.");
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}
}
你试试看这样
DataSet ds = new DataSet();
OleDbConnection cn = CPub_DBConn.GetConn();
cn.Open();
OleDbTransaction stran = cn.BeginTransaction();
OleDbCommand myCommand = new OleDbCommand("insert into GRAPH_TEMP values('a')", cn,stran );
myCommand.ExecuteNonQuery();
OleDbDataAdapter da = new OleDbDataAdapter("select NAME from GRAPH_TEMP",cn,stran );
da.Fill(ds,"GRAPH_TEMP");
stran.Commit();
cn.Close();
哪有这样的方法重载啊?不对吧
OleDbCommand selectCommand = new OleDbCommand("select NAME from GRAPH_TEMP",cn,stran );
OleDbDataAdapter da = new OleDbDataAdapter(selectCommand );
da.Fill(ds,"GRAPH_TEMP");
OleDbConnection cn = new OleDbConnection("Provider=SQLOLEDB.1;Persist Security Info=False;Data Source=192.160.10.75;Initial Catalog=Northwind;User ID=sa;Password=sa");
cn.Open();
OleDbTransaction stran = cn.BeginTransaction();
OleDbCommand myCommand = new OleDbCommand("insert into Employees(LastName,FirstName) values('TestL','TestF')", cn,stran );
myCommand.ExecuteNonQuery();
OleDbCommand selectCommand = new OleDbCommand("select LastName from Employees",cn,stran );
OleDbDataAdapter da = new OleDbDataAdapter(selectCommand );
da.Fill(ds,"GRAPH_TEMP");
stran.Commit();
cn.Close();以上在我的机器上通过
.在OleDbTransaction stran = cn.BeginTransaction()后
加上:
myCommand.Connection = myConnection
myCommand.Transcation = stran
.
.
.
http://community.csdn.net/Expert/topic/4073/4073467.xml?temp=.381756