代码如下:
删除一个id为3的记录(数据库中存在此记录)
删除一个id为100的记录(数据库中不存在此记录)
封装为事务,应Rollback(),但就是不执行,try中的语名执行完,直接跳到了finallyprotected void Button4_Click(object sender, EventArgs e)
{
string connectionString = WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection testConnection = new SqlConnection(connectionString))
{
SqlCommand myCommand = testConnection.CreateCommand();
SqlTransaction myTransaction = null;
try
{
testConnection.Open();
myTransaction = testConnection.BeginTransaction();
myCommand.Transaction = myTransaction;
myCommand.CommandText = "delete test where id=3";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "delete test where id=100";
myCommand.ExecuteNonQuery();
myTransaction.Commit();
Response.Write("执行成功!");
}
catch (System.Exception)
{
myTransaction.Rollback();
Response.Write("没有执行!");
}
finally
{
testConnection.Close();
}
}
}
急!!!!!!!!!!!!!
删除一个id为3的记录(数据库中存在此记录)
删除一个id为100的记录(数据库中不存在此记录)
封装为事务,应Rollback(),但就是不执行,try中的语名执行完,直接跳到了finallyprotected void Button4_Click(object sender, EventArgs e)
{
string connectionString = WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection testConnection = new SqlConnection(connectionString))
{
SqlCommand myCommand = testConnection.CreateCommand();
SqlTransaction myTransaction = null;
try
{
testConnection.Open();
myTransaction = testConnection.BeginTransaction();
myCommand.Transaction = myTransaction;
myCommand.CommandText = "delete test where id=3";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "delete test where id=100";
myCommand.ExecuteNonQuery();
myTransaction.Commit();
Response.Write("执行成功!");
}
catch (System.Exception)
{
myTransaction.Rollback();
Response.Write("没有执行!");
}
finally
{
testConnection.Close();
}
}
}
急!!!!!!!!!!!!!
程序没出错的话,肯定执行不到catch语句
这条语句并没有错,只是“(所影响的行数为 0 行)”,所以事务不会Rollback()
个人拙见!!!!
using (SqlConnection testConnection = new SqlConnection(connectionString))
{
SqlCommand myCommand = testConnection.CreateCommand();
SqlTransaction myTransaction = null;
try
{
int[] i = new int[2];//记录删除记录数
testConnection.Open();
myTransaction = testConnection.BeginTransaction();
myCommand.Transaction = myTransaction;
myCommand.CommandText = "delete test where id=3";
i[0] = myCommand.ExecuteNonQuery();
myCommand.CommandText = "delete test where id=100";
i[1] = myCommand.ExecuteNonQuery();
if (i[0] == 0 || i[1] == 0)
{
myTransaction.Rollback();
Response.Write("没有执行!");
}
else
{
myTransaction.Commit();
Response.Write("执行成功!");
} }
catch (System.Exception)
{
myTransaction.Rollback();
Response.Write("没有执行!");
}
finally
{
testConnection.Close();
}
}
MCommand.ExecuteNonQuery();
这里改成int recordAffected=mycommand.ExecuteNonQuery();用来返回的行数
if(recordAffected<=0) trans.RollBackTrans();//返回
myCommand.CommandText = "delete test where id=100";