public bool ExecDataBySqls(List<string> strSqls, OracleConnection conn)
{
bool booIsSucceed = false; //声明提交数据是否成功的标记
OracleCommand cmd = new OracleCommand(); //创建OracleCommand对象
cmd.Connection = conn; //设置OracleCommand对象的Connection属性
if (conn.State == ConnectionState.Closed)
{
conn.Open(); //打开数据库连接
}
OracleTransaction OraTran = conn.BeginTransaction(); //开始一个事务
try
{
cmd.Transaction = OraTran; //设置OracleCommand对象的Transaction属性
foreach (string item in strSqls)
{
cmd.CommandType = CommandType.Text; //设置命令类型为SQL文本命令
cmd.CommandText = item; //设置要对数据源执行的SQL语句
cmd.ExecuteNonQuery(); //执行SQL语句并返回受影响的行数
}
OraTran.Commit(); //提交事务,持久化数据
booIsSucceed = true; //表示提交数据库成功
}
catch
{
OraTran.Rollback(); //回滚事务,恢复数据
booIsSucceed = false; //表示提交数据库失败!
}
finally
{
conn.Close(); //关闭连接
strSqls.Clear(); //清除列表strSqls中的元素
}
return booIsSucceed; //方法返回值
{
bool booIsSucceed = false; //声明提交数据是否成功的标记
OracleCommand cmd = new OracleCommand(); //创建OracleCommand对象
cmd.Connection = conn; //设置OracleCommand对象的Connection属性
if (conn.State == ConnectionState.Closed)
{
conn.Open(); //打开数据库连接
}
OracleTransaction OraTran = conn.BeginTransaction(); //开始一个事务
try
{
cmd.Transaction = OraTran; //设置OracleCommand对象的Transaction属性
foreach (string item in strSqls)
{
cmd.CommandType = CommandType.Text; //设置命令类型为SQL文本命令
cmd.CommandText = item; //设置要对数据源执行的SQL语句
cmd.ExecuteNonQuery(); //执行SQL语句并返回受影响的行数
}
OraTran.Commit(); //提交事务,持久化数据
booIsSucceed = true; //表示提交数据库成功
}
catch
{
OraTran.Rollback(); //回滚事务,恢复数据
booIsSucceed = false; //表示提交数据库失败!
}
finally
{
conn.Close(); //关闭连接
strSqls.Clear(); //清除列表strSqls中的元素
}
return booIsSucceed; //方法返回值
}
多条SQL语句操作用LIST泛型封装,只要其中一条SQL语句执行失败即回滚,要么都成功要么都失败,为什么C#第一次调用该方法成功,之后一直是失败呢?一个界面多次添加记录,也不好设断点调试,查不出原因。请求高手指教。不胜感激。