asp.net中怎么使用事务? ASP.NETc#中使用事务怎么操作数据库?大家能给我举例说明一下吗?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection()) { conn.ConnectionString = "sdfsdf"; conn.Open(); System.Data.SqlClient.SqlTransaction tran = conn.BeginTransaction(); using (System.Data.SqlClient.SqlCommand command= conn.CreateCommand()) { command.CommandText = "xxxx"; try { command.ExecuteNonQuery(); tran.Commit(); } catch { tran.Rollback(); } finally { tran.Dispose(); } } } 首先得明白 在cs文件处理事务的时候 是返回受影响的行 pwebsql.Comm.Transaction = pwebsql.Conn.BeginTransaction(); try { pwebsql.Comm.CommandType = CommandType.StoredProcedure; //添加一个酒店 pwebsql.Comm.CommandText = "up_HotelAdd"; pwebsql.Comm.Parameters.Add("@hotelID", SqlDbType.Int).Direction = ParameterDirection.Output; int rows = pwebsql.Comm.ExecuteNonQuery(); hotelID = Convert.ToInt32( pwebsql.Comm.Parameters["@hotelID"].Value); //返回酒店编号 pwebsql.Comm.Parameters.Clear(); //添加一个酒店用户 pwebsql.Comm.CommandText = "up_ManagerAddUser"; pwebsql.Comm.Parameters.Add("@userID",SqlDbType.Int).Direction = ParameterDirection.Output; int row = pwebsql.Comm.ExecuteNonQuery(); //提交事务 pwebsql.Comm.Transaction.Commit(); if (rows >= 0 && row >= 0) { return true; } else { return false; } } catch { //回滚事务 pwebsql.Comm.Transaction.Rollback(); hotelID = 0; return false; } using(SqlTransaction trans = myConnection.BeginTransaction()){try{//开始事物if(trans!=null){myCommand.Transaction = trans;}////提交事物trans.Commit();}catch(Exception e){string infoMessage = e.Message;//事物回滚trans.Rollback();}finally{myAdapter.Dispose();myCommand.Dispose();myCon.Close();myCon.Dispose();}} SqlConnection con = new SqlConnection("连接字符串"); con.Open(); SqlTransaction myTrans = con.BeginTransaction(); //事务开始 SqlCommand cmd = new SqlCommand(); cmd.CommandText = "sql语句"; cmd.Transaction = myTrans; try { cmd.ExecuteNonQuery(); myTrans.Commit(); //提交事务 } catch { myTrans.Rollback(); //事务回滚 } finally { con.Close(); myTrans.Dispose(); } using (System.Data.SqlClient.SqlConnection conn = DataBaseOperator.GetMyConnection()) { conn.Open(); System.Data.SqlClient.SqlTransaction tran = conn.BeginTransaction(); using (System.Data.SqlClient.SqlCommand command = conn.CreateCommand()) { command.CommandText = "DELETE FROM member WHERE username= " + "'" + this.TextBox1.Text + "'"; command.ExecuteNonQuery(); command.CommandText = "DELETE FROM member WHERE username = " + "'" + this.TextBox2.Text + "'"; command.ExecuteNonQuery(); try { tran.Commit(); Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", "<script>alert('事务操作成功!');</script>"); } catch { tran.Rollback(); Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", "<script>alert('操作不成功!事务生产回滚');</script>"); } finally { tran.Dispose(); } } }看看那里不对? try{ using (System.Data.SqlClient.SqlConnection conn = DataBaseOperator.GetMyConnection()) { conn.Open(); System.Data.SqlClient.SqlTransaction tran = conn.BeginTransaction(); using (System.Data.SqlClient.SqlCommand command = conn.CreateCommand()) { command.CommandText = "DELETE FROM member WHERE username= " + "'" + this.TextBox1.Text + "'"; command.ExecuteNonQuery(); command.CommandText = "DELETE FROM member WHERE username = " + "'" + this.TextBox2.Text + "'"; int i = Convert.ToInt32(command.ExecuteSc....())//返回影响的行数 if(i>=0) {tran.Commit(); Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", " <script> alert('事务操作成功!'); </script> ");}else{ tran.Rollback(); Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", " <script> alert('操作不成功!事务生产回滚'); </script> ");} } catch { Response.Write('<script> alert('数据库访问失败') </script>') } //用了Using可以不加finally ///finally //{ // tran.Dispose(); // } } } 这个不好编辑,自己仔细看下咯,事务最好放存储过程刚写掉了点 2个Sql语句都返回影响行数,用逻辑与判断下 catch (Exception ex) { Response.Write(' <script> alert('数据库访问失败') </script> ') } tran.Dispose();是这一句吗? using (System.Data.SqlClient.SqlConnection conn = DataBaseOperator.GetMyConnection()) { conn.Open(); //声明事务并指定连结串 System.Data.SqlClient.SqlTransaction tran = conn.BeginTransaction(); //声明命令操作 System.Data.SqlClient.SqlCommand command = conn.CreateCommand(); //给命令指定事务 command.Transaction = tran; try { command.CommandText = "DELETE FROM member WHERE username= " + "'" + this.TextBox1.Text + "'"; command.ExecuteNonQuery(); //command.Transaction = tran; command.CommandText = "DELETE FROM member WHERE username = " + "'" + this.TextBox2.Text + "'"; command.ExecuteNonQuery(); tran.Commit(); this.GridView1.DataSource = mydata.MyMemberReader(); this.GridView1.DataBind(); } catch { tran.Rollback(); } finally { tran.Dispose(); } }上面代码中//command.Transaction = tran;这一句代码我可以不要吗?....? 这里比较详细说明了各种方式:http://hi.baidu.com/sjhyqiang/blog/item/bf62bda247da87afcaefd062.html 上面代码中//command.Transaction = tran;这一句代码我可以不要吗?....? 请教关于源代码导入新解决方案的问题 +++高分求,软件项目文档+++ 请教如何隐藏DataGrid控件? 请问怎样读取数据库word文件 求助一个控件 汉字问题 大虾指教:如何将存储在数据库中的图片绑定到datagrid中 100分求解 我郁闷啊为什么dataset 写的xml文件却无法读取呢??? 高手请进,请问我用JAVASCRIPT动态的用XMLHTTP传一个值到后台,然后在前台的 在datagrid自动生成属性中做链接时如何传两个参数? 急求一个问题,明天交项目,帮帮忙! 在线急等:关HTML控件(FILE)非常奇怪的问题!
{
conn.ConnectionString = "sdfsdf";
conn.Open();
System.Data.SqlClient.SqlTransaction tran = conn.BeginTransaction();
using (System.Data.SqlClient.SqlCommand command= conn.CreateCommand())
{
command.CommandText = "xxxx";
try
{
command.ExecuteNonQuery();
tran.Commit();
}
catch
{
tran.Rollback();
}
finally
{
tran.Dispose();
}
}
}
pwebsql.Comm.Transaction = pwebsql.Conn.BeginTransaction();
try
{
pwebsql.Comm.CommandType = CommandType.StoredProcedure;
//添加一个酒店
pwebsql.Comm.CommandText = "up_HotelAdd"; pwebsql.Comm.Parameters.Add("@hotelID", SqlDbType.Int).Direction = ParameterDirection.Output;
int rows = pwebsql.Comm.ExecuteNonQuery(); hotelID = Convert.ToInt32( pwebsql.Comm.Parameters["@hotelID"].Value); //返回酒店编号 pwebsql.Comm.Parameters.Clear();
//添加一个酒店用户
pwebsql.Comm.CommandText = "up_ManagerAddUser";
pwebsql.Comm.Parameters.Add("@userID",SqlDbType.Int).Direction = ParameterDirection.Output;
int row = pwebsql.Comm.ExecuteNonQuery();
//提交事务
pwebsql.Comm.Transaction.Commit(); if (rows >= 0 && row >= 0)
{
return true;
}
else
{
return false;
}
}
catch
{
//回滚事务
pwebsql.Comm.Transaction.Rollback();
hotelID = 0;
return false;
}
{
try
{
//开始事物
if(trans!=null){
myCommand.Transaction = trans;
}////提交事物
trans.Commit();
}
catch(Exception e)
{
string infoMessage = e.Message;
//事物回滚
trans.Rollback();
}
finally
{
myAdapter.Dispose();
myCommand.Dispose();
myCon.Close();
myCon.Dispose();
}
}
con.Open();
SqlTransaction myTrans = con.BeginTransaction(); //事务开始
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "sql语句";
cmd.Transaction = myTrans;
try
{
cmd.ExecuteNonQuery();
myTrans.Commit(); //提交事务
}
catch
{
myTrans.Rollback(); //事务回滚
}
finally
{
con.Close();
myTrans.Dispose();
}
{
conn.Open();
System.Data.SqlClient.SqlTransaction tran = conn.BeginTransaction();
using (System.Data.SqlClient.SqlCommand command = conn.CreateCommand())
{
command.CommandText = "DELETE FROM member WHERE username= " + "'" + this.TextBox1.Text + "'";
command.ExecuteNonQuery();
command.CommandText = "DELETE FROM member WHERE username = " + "'" + this.TextBox2.Text + "'";
command.ExecuteNonQuery();
try
{
tran.Commit();
Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", "<script>alert('事务操作成功!');</script>");
}
catch
{
tran.Rollback();
Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", "<script>alert('操作不成功!事务生产回滚');</script>");
}
finally
{
tran.Dispose();
}
}
}看看那里不对?
{
using (System.Data.SqlClient.SqlConnection conn = DataBaseOperator.GetMyConnection())
{
conn.Open();
System.Data.SqlClient.SqlTransaction tran = conn.BeginTransaction();
using (System.Data.SqlClient.SqlCommand command = conn.CreateCommand())
{
command.CommandText = "DELETE FROM member WHERE username= " + "'" + this.TextBox1.Text + "'";
command.ExecuteNonQuery();
command.CommandText = "DELETE FROM member WHERE username = " + "'" + this.TextBox2.Text + "'";
int i = Convert.ToInt32(command.ExecuteSc....())//返回影响的行数
if(i>=0)
{tran.Commit();
Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", " <script> alert('事务操作成功!'); </script> ");}
else
{
tran.Rollback();
Page.ClientScript.RegisterStartupScript(this.GetType(), "Startup", " <script> alert('操作不成功!事务生产回滚'); </script> ");
}
}
catch
{
Response.Write('<script> alert('数据库访问失败') </script>')
}
//用了Using可以不加finally
///finally
//{
// tran.Dispose();
// }
}
}
刚写掉了点 2个Sql语句都返回影响行数,用逻辑与判断下
{
Response.Write(' <script> alert('数据库访问失败') </script> ')
}
是这一句吗?
{
conn.Open();
//声明事务并指定连结串
System.Data.SqlClient.SqlTransaction tran = conn.BeginTransaction();
//声明命令操作
System.Data.SqlClient.SqlCommand command = conn.CreateCommand();
//给命令指定事务
command.Transaction = tran;
try
{
command.CommandText = "DELETE FROM member WHERE username= " + "'" + this.TextBox1.Text + "'";
command.ExecuteNonQuery();
//command.Transaction = tran;
command.CommandText = "DELETE FROM member WHERE username = " + "'" + this.TextBox2.Text + "'";
command.ExecuteNonQuery();
tran.Commit();
this.GridView1.DataSource = mydata.MyMemberReader();
this.GridView1.DataBind();
}
catch
{
tran.Rollback();
}
finally
{
tran.Dispose();
}
}上面代码中//command.Transaction = tran;这一句代码我可以不要吗?....?