时间:2021-07-01 10:21:17 帮助过:11人阅读
打开数据库连接的方法
//数据库连接字符串 private const string conStr = "server=.;database=Food;uid=sa;pwd=123456"; private static SqlConnection _con; /// <summary> /// 打开数据库连接 /// </summary> /// <returns></returns> private static SqlConnection OpenDatabase() { if (_con == null || _con.State == ConnectionState.Closed) { _con = new SqlConnection(conStr); _con.Open(); } return _con; }
生产SqlCommand对象方法
/// <summary> /// 参数化查询绑定参数 /// </summary> /// <param name="sqlStr"></param> /// <param name="SqlPar"></param> /// <returns></returns> private static SqlCommand BulidCommand(string sqlStr,SqlParameter[] SqlPar) { SqlConnection con = OpenDatabase(); SqlCommand com = new SqlCommand(sqlStr, con); com.Parameters.AddRange(SqlPar); return com; }
实例
下面例子本来是想用winform写个注册,结界觉着拖控件太麻烦了,索性就直接在代码里面写sql了
页面(输入框可以自动忽略,这里只用到了按钮的点击事件)
执行操作前的member表状态
注册按钮点击事件代码(页面控件是从登陆页面复制过来的注册按钮的Name属性没有更改所以事件名称是LoginBtn_Click而不是RegisterBtn_Click)
private void LoginBtn_Click(object sender, EventArgs e) { List<string> sqlStr = new List<string> { { @"insert member values(@MemberAccount,@Password)"}, { @"insert member values(@MemberAccount,@Password)"} }; List<SqlParameter[]> sqlPar = new List<SqlParameter[]> { new SqlParameter[] { new SqlParameter("@MemberAccount","lei1"), new SqlParameter("@Password", "123456") }, new SqlParameter[] { new SqlParameter("@MemberAccount","lei2"), new SqlParameter("@Password", "123456") } }; int result=DBHlep.ModifyDatabaseTran(sqlStr,sqlPar); if (result > 0) { MessageBox.Show("成功!"); } else { MessageBox.Show("失败!"); } }
点击注册按钮后我们再来看看member表状态
上面的是Sql语句不报错的执行结果,接下来,我们将第二条sql语句的表名从menber改为menber1,看看member表的数据会发生什么变化
PS:我的数据库里面没有表member1所以第二条sql必定会执行失败,第二条sql失败后我们看看表member是否新增了一条数据(第一条sql是正确的,只修改了第二条sql的表名),新增了一条数据则事务执行失败,反之事务执行成功
private void LoginBtn_Click(object sender, EventArgs e) { List<string> sqlStr = new List<string> { { @"insert member values(@MemberAccount,@Password)"}, //将第二条sql的表名修改为member1 { @"insert member1 values(@MemberAccount,@Password)"} }; List<SqlParameter[]> sqlPar = new List<SqlParameter[]> { new SqlParameter[] { new SqlParameter("@MemberAccount","lei1"), new SqlParameter("@Password", "123456") }, new SqlParameter[] { new SqlParameter("@MemberAccount","lei2"), new SqlParameter("@Password", "123456") } }; int result=DBHlep.ModifyDatabaseTran(sqlStr,sqlPar); if (result > 0) { MessageBox.Show("成功!"); } else { MessageBox.Show("失败!"); } }
点击注册按钮后看表member的数据是否发生了变化
member表数据未发生变化,事务执行成功!
好了,这篇博客到这里就结束了,如有不明白之处或是有更好的意见请在下方留言区留下你的评论
AOD.NET实现数据库事物Transaction
标签:了解 效果 tran 集合 cti mem begin query dcom