--事务的使用示例
create database MyDB
go
use MyDB create table account
(
Id int identity primary key,
balance int --余额
) insert into account values(1000)
insert into account values(200) go
--在存储过程中使用事务,简单转帐
create procedure transfer(@fromId int, @toId int, @total int) as
begin
declare @ts varchar(30), @tb int
begin transaction
update account set balance=balance+@total where id=@toId
update account set @tb=balance, balance=balance-@total where id=@fromId
if (select balance from account where id=@fromId)>=0
commit transaction
else
begin
set @ts=convert(varchar(30), @total) --int类型转换为字符串,(30)可省略
raiserror('余额%d不足以转帐%s', 16, 1, @tb, @ts)--%d,%s为格式控制符
rollback transaction
end
end go exec transfer 1, 2, 1234 --测试,转帐不成功
select * from account
exec transfer 1, 2, 500 --测试,转帐成功
select * from account
//WinForm实现中的若干问题

//单击DataGridView控件(名为dgvUser)时,把当前行的数据填充到文本框控件的方法
private void dgvUser_Click(object sender, EventArgs e)
{
txtUserName.Text = dgvUser.CurrentRow.Cells[0].Value.ToString();
txtDescription.Text = dgvUser.CurrentRow.Cells[1].Value.ToString();
txtPassword.Text = dgvUser.CurrentRow.Cells[2].Value.ToString();
txtAuthority.Text = dgvUser.CurrentRow.Cells[3].Value.ToString();
} //设置DataGridView控件(名为dgvUser)第三列不可见的语句
dgvUser.Columns[2].Visible = false; //设置Button控件(名为btnInsert)不可用的语句
btnInsert.Enabled = false; //控制只有一个子窗体(名为frmUser)的方法
//设置主窗体的IsMdiContainer为True,WindowState为Maximized
//menuUser为菜单项名
private void menuUser_Click(object sender, EventArgs e)
{
foreach (Form frm in this.MdiChildren)//关闭所有子窗体
{
frm.Close();
} frmUser myFrmUser = new frmUser();
myFrmUser.MdiParent = this;//设置为子窗体
myFrmUser.WindowState = FormWindowState.Maximized;//最大化
myFrmUser.Show();
} //登录窗体(不要作为子窗体)关闭后才能做其他事情及菜单控制的方法
private void cotrolMenu(string auth)//自定义函数,需据实际情况修改
{
if (auth == "0")
{
menuUser.Visible = true;
menuReader.Visible = true;
}
else
{
menuUser.Visible = false;
menuReader.Visible = false;
}
} private void menuLogin_Click(object sender, EventArgs e)
{
myfrmLogin=new frmLogin();
myfrmLogin.ShowDialog();//将窗体显示为模式对话框
cotrolMenu(myClass.Authority);//myClass为类名,Authority为其中定义的公有变量
} //确认退出程序的方法,删除确认类似
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Really Exit?", "Confirm Exit",
MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
}

事务的使用示例及WinForm实现中的若干问题的更多相关文章

  1. xBIM 实战04 在WinForm窗体中实现IFC模型的加载与浏览

    系列目录    [已更新最新开发文章,点击查看详细]  WPF底层使用 DirectX 进行图形渲染.DirectX  能理解可由显卡直接渲染的高层元素,如纹理和渐变,所以 DirectX 效率更高. ...

  2. ThinkPHP 实现数据库事务回滚示例代码

    ThinkPHP提供了数据库的事务支持,如果要在应用逻辑中使用事务,可以参考下面的方法:   启动事务: $User->startTrans(); 提交事务: $User->commit( ...

  3. 后续来啦:Winform/WPF中快速搭建日志面板

    后续来啦:Winform/WPF中快速搭建日志面板 继昨天发文ASP.NET Core 可视化日志组件使用(阅读文章,查看视频)后,视频下有朋友留言 "Winform客户端的程序能用它不?& ...

  4. .NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件

    系列目录     [已更新最新开发文章,点击查看详细] 在我的博客<.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件>中介绍了WinForm ...

  5. 在Winform程序中设置管理员权限及为用户组添加写入权限

    在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身 ...

  6. C#将exe运行程序嵌入到自己的winform窗体中

    以下例子是将Word打开,然后将它嵌入到winform窗体中,效果如下图:C将exe运行程序嵌入到自己的winform窗体中 - kingmax_res - iSport注意:该方法只适用于com的e ...

  7. NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中

    以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...

  8. 在Winform界面中实现对多文档窗体的参数传值

    在Winform界面中窗体我们一般使用多文档进行展示,也就是类似一般的选项卡的方式可以加载多个窗体界面.一般来说,我们如果打开新的窗体,给窗体传递参数是很容易的事情,但是在框架层面,一般的窗体是通过动 ...

  9. 在Winform开发中使用日程控件XtraScheduler(2)--深入理解数据的存储

    在上篇随笔<在Winform开发中使用日程控件XtraScheduler>中介绍了DevExpress的XtraScheduler日程控件的各种使用知识点,对于我们来说,日程控件不陌生,如 ...

随机推荐

  1. MFC类中获得其它类指针

    当用VC++的Application Wizard生成除了CDialog Basiced以外的应用程序时,将自动产生视图类.文档类.主帧窗口类.应用程序类等等.一般来说,程序的核心数据及操作在文档类中 ...

  2. 一道c++小编程题,

    题目: 编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词,程序应该找出满足以下条件的单词的输入位置:该单词的后面紧跟着再次出现自己本身,跟 踪重复次数量多的单词及其重复次数 ...

  3. Mongodb 上传图片

    mongdb 上传图片: [root@hy-mrz01 ~]# mongofiles put -u "pics" -p "jh7yxx" --host 127. ...

  4. Beaker 1.6.4 : Python Package Index

    Beaker 1.6.4 : Python Package Index Beaker 1.6.4 Download Beaker-1.6.4.tar.gz A Session and Caching ...

  5. Hadoop基于文件的数据结构及实例

    基于文件的数据结构 两种文件格式: 1.SequenceFile 2.MapFile SequenceFile 1.SequenceFile文件是Hadoop用来存储二进制形式的<key,val ...

  6. cocos2d-x游戏开发 跑酷(两) 物理世界

    原创.转载请注明出处:http://blog.csdn.net/dawn_moon/article/details/21240343 泰然的跑酷用的chipmunk物理引擎.我没有细致学过这个东西. ...

  7. Servlet过滤器——异常捕获过滤器

    1.概述 介绍如何实现异常捕获过滤器. 2.技术要点 本实例主要是在过滤器Filter的doFilter()方法中,对执行过滤器链的chain的doFilter()语句处添加try…catch异常捕获 ...

  8. treeview树形菜单,递归

    我使用的是递归是实现无限级树形菜单: using System; using System.Collections; using System.Configuration; using System. ...

  9. css hack 如何区分 ie7 ie8

    .style { width:100px; /*火狐以及一般浏览器*/ width:200px\9; /*IE8*/ *width:150px; /*IE7*/ _width:50px; /*IE6* ...

  10. struts2对action中的方法进行输入校验---xml配置方式(3)

    上面两篇文章已经介绍了通过编码java代码的方式实现action方法校验,这里我们介绍第二种方式:xml配置文件 首先我们来看一个样例: ValidateAction.java: package co ...