带事物处理的DBHelp和sql语句

DBHelp语句

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace 模拟ATM机转账
{
    static class DBHelp
    {
        public static bool IDUBySql(string sql)
        {
            bool fa = false;
            string str = "server=.;integrated security=true;database=BankDB";
            SqlConnection sqlconn = new SqlConnection(str);
            SqlCommand sqlcomm = new SqlCommand(sql, sqlconn);

            try
            {
                sqlconn.Open();
                //开启事务
                sqlcomm.Transaction = sqlconn.BeginTransaction();
                fa = sqlcomm.ExecuteNonQuery() > 0 ? true : false;
                //提交事务
                sqlcomm.Transaction.Commit();
            }
            catch (SqlException ex)
            {
                //回滚事务
                sqlcomm.Transaction.Rollback();
            }
            finally
            {
                sqlconn.Close();
            }

            return fa;
        }
        public static DataTable GetTableBySql(string sql)
        {
            DataTable ta = new DataTable();
            string str = "server=.;integrated security=true;database=BankDB";
            SqlConnection sqlconn = new SqlConnection(str);
            SqlCommand sqlcomm = new SqlCommand(sql, sqlconn);

            SqlDataAdapter da = new SqlDataAdapter(sqlcomm);
            da.Fill(ta);

            return ta;
        }
    }
}

sql语句

--G.事务:
--定义转账事务,并实现转账操作进行测试,注意:转账过程中实际上两个交易过程,一个是“存入”,一个是“支取”,注意添加交易记录到交易信息表中
begin tran tran_bank
declare @cou int
set @cou=0

update cardInfo set balance=balance-900 where cardID=‘1010 3576 1234 5678‘

update cardInfo set balance=balance+500 where cardID=‘1010 3576 1212 1134‘

set @cou=@@error+@cou

if(@cou<>0)
    begin
        rollback tran --滚回
    end
else
    begin
        commit tran
        insert into transInfo(cardID,transType ,transMoney,remark) values (‘1010 3576 1212 1134‘,‘存入‘,500,‘李四存款500‘)
        insert into transInfo(cardID,transType ,transMoney,remark) values (‘1010 3576 1234 5678‘,‘支取‘,900,‘张三取款900‘)
        print ‘交易成功,以保存新数据‘
    end
go
时间: 2024-10-26 01:33:16

带事物处理的DBHelp和sql语句的相关文章

MyBatis动态Sql语句

林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka   MyBatis中对数据库的操作.有时要带一些条件.因此动态SQL语句很有必要.以下就主要来讲讲几个经常使用的动态SQL语句的语法 MyBatis中用于实现动态SQL的元素主要有: if choose(when.otherwise) trim where set foreach 1.if 对属性进行推断.假设不为空则运行推断条件 <select id="selectByCriter

MyBatis学习总结_11_MyBatis动态Sql语句

MyBatis中对数据库的操作,有时要带一些条件,因此动态SQL语句非常有必要,下面就主要来讲讲几个常用的动态SQL语句的语法 MyBatis中用于实现动态SQL的元素主要有: if choose(when,otherwise) trim where set foreach 1.if 对属性进行判断,如果不为空则执行判断条件 [html] view plaincopy <select id="selectByCriteria" parameterType="com.mu

SQL语句性能优化--LECCO SQL Expert

SQL语句的优化是将性能低下的SQL语句转换成目的相同的性能优异的SQL语句. 人工智能自动SQL优化就是使用人工智能技术,自动对SQL语句进行重写,从而找到性能最好的等效SQL语句. 数据库性能的优化   一个数据库系统的生命周期可以分成:设计.开发和成品三个阶段.在设计阶段进行数据库性能优化的成本最低,收益最大.在成品阶段进行数据库性能优化的成本最高,收益最小. 数据库的优化通常可以通过对网络.硬件.操作系统.数据库参数和应用程序的优化来进行.最常见的优化手段就是对硬件的升级.根据统计,对网

带Left Join的SQL语句的执行顺序

基础的SQL执行顺序 SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结果集进行筛选.筛选出需要的信息形成新的结果集. 3.group by 对新的结果集分组. 4.having 筛选出想要的分组. 5.select 选择列. 6.order by 当所有的条件都弄完了.最后排序. 带连接的SQL语句执行顺序(以Left Join为列) 我的理解是这样,SQL语句中无论

在JDBC中使用带参数的SQL语句

ADO.Net中,支持带参数的SQL语句,例如:Select * from Tables where [email protected],其中@column1为SQL参数,使用起来非常方便,而JDBC中没有找到此功能,感觉有点不便, 于是想自己实现一个.今天正好看见csdn中有一篇http://blog.csdn.net/wallimn/article/details/3734242 文章,有些感触,于是把自己的实现也写出来. 我的思路: 1: 在SQL语句中找到以@开始,以" ",

SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号

SQL Server之 (四) ADO增删查改  登录demo  带参数的sql语句  插入自动返回行号 自己学习笔记,转载请注明出处,谢谢!---酸菜 1.什么是ADO.NET ADO.NET是一组类库,这组类库可以让我们通过程序的方式访问数据库,并以各种方式操作存储在其中的数据; ADO.NET是基于.NET FrameWork,与.NET FrameWork类库的其余部分是高度集成的 2.连接数据库的步骤 ①创建连接字符串 Data Source=XXX-PC; Initial Catal

EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ; EF5执行sql查询语句 Database.SqlQuery 带返回值

一: 执行sql语句,返回受影响的行数 在mysql里面,如果没有影响,那么返回行数为  -1 ,sqlserver 里面  还没有测试过 using (var ctx = new MyDbContext()) { ctx.Database.ExecuteSqlCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1"); } 二 : Database.SqlQuery<T>   EF5执行sql查询语句

通过带参数的Sql语句来实现模糊查询(多条件查询)

#region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books"); List<string> listWheres = new List<string>(); List<SqlParameter> listParams = new List<SqlParameter>(); if (txtBookName.Text.T

C#使用带like的sql语句时防sql注入的方法

本文实例叙述了在拼接sql语句的时候,如果遇到Like的情况该怎么办. 一般采用带like的SQL语句进行简单的拼接字符串时,需要开率遇到sql注入的情况.这确实是个需要注意的问题. 这里结合一些查阅的资料做了初步的整理. 如这样一个sql语句: select * from game where gamename like '%张三%' 用c#表示的话: string keywords = "张三"; StringBuilder strSql=new StringBuilder();