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


    --事务的使用示例
    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;
    	}
    }
  • 相关阅读:
    32位和64位系统区别及int字节数
    进程的三种状态及转换
    已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
    一步一步写算法
    Ubuntu中APache+mod_pyhon
    JAVA SOCKET
    TCP连接 断开
    mfc 创建一个C++ 类
    mfc 类的析构函数
    mfc 类对象的引用
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3184711.html
Copyright © 2020-2023  润新知