--事务的使用示例
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. QTableWidget表格合并若干问题及解决方法

    Qt提供 QTableWidget作为表格的类以实现表格的基本功能,表格中所装载的每一个单元格由类QTableWidgetItem提供.这是基于表格实现 Qt提供的一个基础类,若想实现定制表格和单元格 ...

  2. HDU 3068 最长回文 Manacher算法

    Manacher算法是个解决Palindrome问题的O(n)算法,能够说是个超级算法了,秒杀其它一切Palindrome解决方式,包含复杂的后缀数组. 网上非常多解释,最好的解析文章当然是Leetc ...

  3. EasyUI - Tabs

    代码: 判断是不是已经存在,如果存在,则直接选中,否则创建新的tab. $('#tabs').tabs({ fit: true, border: false }) $('#Tree').tree({ ...

  4. HBASE完全分布式模式的安装

    1集群环境下hadoop.1.1.2已经安装成功 2配置hosts,及环境变量 3编辑hbase-env.xml 4编辑hbase-site.xml 5编辑regionservers文件 6把Hbas ...

  5. Mybatis 数据库物理分页插件 PageHelper

    以前使用ibatis/mybatis,都是自己手写sql语句进行物理分页,虽然稍微有点麻烦,但是都习惯了.最近试用了下mybatis的分页插件 PageHelper,感觉还不错吧.记录下其使用方法. ...

  6. rac各节点实例需设置为相同的一些参数

    RAC Parameters That Require Identical Settings • ACTIVE_INSTANCE_COUNT • ARCHIVE_LAG_TARGET • COMPAT ...

  7. Linux版EPUB阅读器

    Linux版EPUB阅读器 如果说用平板电脑看书尚属主流的话,那么在电脑上读书就非常少见了.专注阅读16世纪的书是非常困难的了,没人希望后台蹦出QQ聊天窗口.但是如果你非要在电脑上打开电子书的话,那么 ...

  8. Spinner的用法实现

    界面上只有一个textview和一个spinner,实现下拉列表框. spinner.xml: <?xml version="1.0" encoding="utf- ...

  9. 与众不同 windows phone (13) - Background Task(后台任务)之后台文件传输(上传和下载)

    原文:与众不同 windows phone (13) - Background Task(后台任务)之后台文件传输(上传和下载) [索引页][源码下载] 与众不同 windows phone (13) ...

  10. Linux Shell常用技巧(一) RE

    一.    特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty.其中/dev/null将会丢掉所有写入它 ...