public static bool ExeDataOra(string sql1,string sql2, string OracleConnString)
{
bool result = false; OracleConnection conn = new OracleConnection(OracleConnString);
OracleTransaction t = conn.BeginTransaction();
try
{
conn.Open();
OracleCommand cmd = new OracleCommand(sql1, conn);
cmd.ExecuteNonQuery();
OracleCommand cmd2 = new OracleCommand(sql2, conn);
cmd2.ExecuteNonQuery();
t.Commit();
result = true;
}
catch
{
t.Rollback();
throw new Exception("访问数据库失败!");
}
finally
{
conn.Close();
} return result;
}在这个方法里执行两条SQL语句,插入两张表,用事务控制,可是执行时,报“服务器无法处理请求”,不用存储过程,怎么样能实现事务呢?
{
bool result = false; OracleConnection conn = new OracleConnection(OracleConnString);
OracleTransaction t = conn.BeginTransaction();
try
{
conn.Open();
OracleCommand cmd = new OracleCommand(sql1, conn);
cmd.ExecuteNonQuery();
OracleCommand cmd2 = new OracleCommand(sql2, conn);
cmd2.ExecuteNonQuery();
t.Commit();
result = true;
}
catch
{
t.Rollback();
throw new Exception("访问数据库失败!");
}
finally
{
conn.Close();
} return result;
}在这个方法里执行两条SQL语句,插入两张表,用事务控制,可是执行时,报“服务器无法处理请求”,不用存储过程,怎么样能实现事务呢?
我没像你这样写过
OracleCommand cmd = new OracleCommand(sql1, conn);
cmd.ExecuteNonQuery();
cmd1 = new OracleCommand(sql2, conn);
cmd1.ExecuteNonQuery();
这样写是可以的吧
using (OracleConnection conn = new OracleConnection(OracleConnString))
{
conn.Open();
OracleCommand cmd = conn.CreateCommand();
OracleTransaction trans = conn.BeginTransaction();
cmd.Transaction = trans; try
{
cmd.CommandText=sql1;
cmd.ExecuteNonQuery();
cmd.CommandText=sql2;
cmd.ExecuteNonQuery();
trans.Commit();
}
catch
{
trans.Rollback();
throw new Exception("Access failed.");
}
}