C#执行SQL事务用法实例
程序员文章站
2023-12-12 17:14:46
本文实例讲述了c#执行sql事务用法。分享给大家供大家参考。具体分析如下:
1.通过存储过程。
2.通过c#中提供的transaction。这里就来演示一下通过c#中提...
本文实例讲述了c#执行sql事务用法。分享给大家供大家参考。具体分析如下:
1.通过存储过程。
2.通过c#中提供的transaction。这里就来演示一下通过c#中提供的transaction 执行sql事务。
webform3.aspx.cs页面
复制代码 代码如下:
using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.web.ui;
using system.web.ui.webcontrols;
using system.configuration;
using system.data.sqlclient;
namespace 用户激活
{
public partial class webform3 : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
}
protected void button1_click(object sender, eventargs e)
{
string connstr=configurationmanager.connectionstrings["connstr"].connectionstring;
using(sqlconnection conn=new sqlconnection(connstr))
{
conn.open();
using (sqltransaction tran = conn.begintransaction()) //开始数据库事务。即创建一个事务对象tran
{
using (sqlcommand cmd =new sqlcommand())
{
cmd.connection = conn;
cmd.transaction = tran; //获取或设置将要其执行的事务
try
{
//在try{}块里执行sqlconnection命令
cmd.commandtext = "update bb set moneys=moneys-" + money.text + " where id=" + toid.text;
cmd.executenonquery();
cmd.commandtext = "update bb set moneys=moneys+" + money.text + " where id=" + fromid.text;
cmd.executenonquery();
tran.commit(); //如果两条sql命令都执行成功,则执行commit这个方法来执行这些操作。
msg.text = "转账成功";
}
catch
{
msg.text = "转账失败";
tran.rollback();//如果执行不成功,发送异常,则执行rollback方法,回滚到事务操作开始之前。
}
}
}
}
}
}
}
using system.collections.generic;
using system.linq;
using system.web;
using system.web.ui;
using system.web.ui.webcontrols;
using system.configuration;
using system.data.sqlclient;
namespace 用户激活
{
public partial class webform3 : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
}
protected void button1_click(object sender, eventargs e)
{
string connstr=configurationmanager.connectionstrings["connstr"].connectionstring;
using(sqlconnection conn=new sqlconnection(connstr))
{
conn.open();
using (sqltransaction tran = conn.begintransaction()) //开始数据库事务。即创建一个事务对象tran
{
using (sqlcommand cmd =new sqlcommand())
{
cmd.connection = conn;
cmd.transaction = tran; //获取或设置将要其执行的事务
try
{
//在try{}块里执行sqlconnection命令
cmd.commandtext = "update bb set moneys=moneys-" + money.text + " where id=" + toid.text;
cmd.executenonquery();
cmd.commandtext = "update bb set moneys=moneys+" + money.text + " where id=" + fromid.text;
cmd.executenonquery();
tran.commit(); //如果两条sql命令都执行成功,则执行commit这个方法来执行这些操作。
msg.text = "转账成功";
}
catch
{
msg.text = "转账失败";
tran.rollback();//如果执行不成功,发送异常,则执行rollback方法,回滚到事务操作开始之前。
}
}
}
}
}
}
}
webform3.aspx页面
复制代码 代码如下:
<%@ page language="c#" autoeventwireup="true" codebehind="webform3.aspx.cs" inherits="用户激活.webform3" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
转账账户:<asp:textbox id="toid" runat="server"></asp:textbox></br>
接收账户:<asp:textbox id="fromid" runat="server"></asp:textbox></br>
转账金额:<asp:textbox id="money" runat="server"></asp:textbox></br>
转账是否成功:<asp:label id="msg" runat="server" text=""></asp:label></br>
<asp:button id="button1" runat="server" text="提交转账" onclick="button1_click" />
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
转账账户:<asp:textbox id="toid" runat="server"></asp:textbox></br>
接收账户:<asp:textbox id="fromid" runat="server"></asp:textbox></br>
转账金额:<asp:textbox id="money" runat="server"></asp:textbox></br>
转账是否成功:<asp:label id="msg" runat="server" text=""></asp:label></br>
<asp:button id="button1" runat="server" text="提交转账" onclick="button1_click" />
</form>
</body>
</html>
运行结果如下图所示:
希望本文所述对大家的c#程序设计有所帮助。