使用transaction后,链接无法关闭
下面这段代码,使用transaction之前没有问题,但是使用transaction之后,无法将oleConnection关掉,为什么?
正常代码:
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);
}
正常代码:
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();
}
...全文
相关推荐
win7中可以关闭的一些服务
- **关闭建议**:同上,对于普通用户来说关闭后影响不大。但如果遇到问题时可能无法使用某些诊断工具。
WebLogic事务
- 如果无法使用 try-with-resources,则需要确保在 finally 块中关闭 Connection。
教育统计软件安装启动项目解决方案.doc
MSDTC(Microsoft Distributed Transaction Coordinator)服务未启动会导致数据保存失败,而MSSQLSERVER服务未启动则可能导致数据库无法连接。
教育统计软件安装启动解决方案资料.pdf
对于使用XPSP3操作系统的用户,可以参考提供的下载链接获取系统补丁。2.
使用dump transaction with no_log的危险性说明
在SQL Server中,`dump transaction with no_log`是一个高级命令,用于在特定情况下清空事务日志,但其使用必须谨慎。


