您的位置:首页 > 其它

事务的使用示例及WinForm实现中的若干问题

2013-07-11 18:17 405 查看
--事务的使用示例
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐