读书人

使用transaction后链接无法关闭,该如

发布时间: 2012-02-03 22:02:47 作者: rapoo

使用transaction后,链接无法关闭
下面这段代码,使用transaction之前没有问题,但是使用transaction之后,无法将oleConnection关掉,为什么?

C# code
 

public static void OpenDB()
{
if (_oleConnection.State != ConnectionState.Open)
{
_oleConnection.Open();
}
}

public static void CloseDB()
{
if (_oleConnection.State != ConnectionState.Closed)
{
_oleConnection.Close();
}
}


public static void SaveControl(List <SmartControlData> list)
{
string strSqlUpdate = "update SMT_Control_Table set PreviousID=?, NextID=? where ID=?;";


OpenDB();

for (int i = 0; i < 1300; i++)
{
SmartControlData Folder = list[i];
OleDbParameter[] parameters = new OleDbParameter[3];

parameters[0] = new OleDbParameter("PreviousID", OleDbType.VarChar, 50);
if (Folder.PreviousID == null)
{
Folder.PreviousID = "";
}
parameters[0].Value = Folder.PreviousID;

parameters[1] = new OleDbParameter("NextID", OleDbType.VarChar, 50);
if (Folder.NextID == null)
{
Folder.NextID = "";
}
parameters[1].Value = Folder.NextID;

parameters[2] = new OleDbParameter("ID", OleDbType.VarChar, 50);
parameters[2].Value = Folder.ID;
//OpenDB();
OleDbCommand cmd = _oleConnection.CreateCommand();

cmd.CommandText = strSqlUpdate;

OleDbTransaction transaction = _oleConnection.BeginTransaction();

cmd.Transaction = transaction;

cmd.Parameters.Add(parameters[0]);
cmd.Parameters.Add(parameters[1]);
cmd.Parameters.Add(parameters[2]);
cmd.ExecuteNonQuery();
transaction.Commit();


//CloseDB();
//ExecuteNonQuery(strSqlUpdate, parameters);
}



正常代码:
C# code
public static void SaveControl(List<SmartControlData> list)        {            string strSqlUpdate = "update SMT_Control_Table set PreviousID=?, NextID=? where ID=?;";            OpenDB();            for (int i = 0; i < 1300; i++)            {                SmartControlData Folder = list[i];                OleDbParameter[] parameters = new OleDbParameter[3];                parameters[0] = new OleDbParameter("PreviousID", OleDbType.VarChar, 50);                if (Folder.PreviousID == null)                {                    Folder.PreviousID = "";                }                parameters[0].Value = Folder.PreviousID;                parameters[1] = new OleDbParameter("NextID", OleDbType.VarChar, 50);                if (Folder.NextID == null)                {                    Folder.NextID = "";                }                parameters[1].Value = Folder.NextID;                parameters[2] = new OleDbParameter("ID", OleDbType.VarChar, 50);                parameters[2].Value = Folder.ID;                ExecuteNonQuery(strSqlUpdate, parameters);                                          }            CloseDB();        }


[解决办法]
提示什么,单机还是网络
[解决办法]
1。 connection 先close
2。 connection 对象也要销毁

读书人网 >Access

热点推荐