那肯定的呀,你要事件肯定要在同一个连接下完成这些操作才有效。
不是长连接
你可以
open()
打开事务
执行sql1
执行sql2
执行sql3...
提交事务或回滚
Close()
这样才有效。
解决方案 »
- HttpWebRequest第一次请求为什么很慢
- 未将对象引用设置到对象的实例
- c# winform 动态创建的窗口 的2个问题
- c/s结构的密码验证 (在线)
- dataGrid中的错误
- C# 怎么把一個dataGrid。DataSource 的DataTable的所有字段放進一個枚舉類型中
- C#winfrom怎样把整个DataGrid保存或更新 要手写的代码
- winform chart控件
- C#中应该怎样设置才能使窗口中的控健随窗口大小变化而变化呢?
- 未处理的“System.Data.SqlClient.SqlException”类型的异常出现在 system.data.dll 中。
- 关于C#中反射的属性说明
- C# picturebox 问题
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static void ExecuteSqlTran(string conStr,List<String> SQLStringList)
{
using (OracleConnection conn = new OracleConnection(conStr))
{
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
OracleTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
foreach (string sql in SQLStringList)
{
if (!String.IsNullOrEmpty(sql))
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (System.Data.OracleClient.OracleException E)
{
tx.Rollback();
throw new Exception(E.Message);
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
}
} 比如这里的OracleTransaction tx = conn.BeginTransaction();
对应的MySQL和sqlserver下都有类似的定义。要有【开始事务】【-执行操作】-【提交或回滚】这一个过程。