事务处理拼接sql语句对数据库的操作.异常回滚

       public List<UserBaseInfoModel> GetCityByExamId(Guid ExamID)
        {
            var cur_user = this.GetCurrentUser();
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                SqlCommand cmd;
                using (SqlTransaction trans = conn.BeginTransaction())
                {

                    try
                    {
                        string sql = @"
                                        SELECT u.City FROM Exam_User_Power p,dbo.User_BaseInfo u
                                        WHERE [email protected]
                                        AND p.UserID=u.UserID
                                        GROUP BY u.City
                                     ";
                        cmd = new SqlCommand(sql, conn, trans);
                        cmd.Parameters.AddWithValue("ExamID", ExamID);
                        SqlDataAdapter sda = new SqlDataAdapter(cmd);
                        DataSet ds = new DataSet();
                        sda.Fill(ds);
                        List<UserBaseInfoModel> list = (List<UserBaseInfoModel>)IListDataSet.DataSetToIList<UserBaseInfoModel>(ds, 0);
                        trans.Commit();
                        return list;
                    }
                    catch
                    {
                        trans.Rollback();
                        throw;
                    }
                    finally
                    {
                        conn.Close();

                    }
                }
            }

            return null;
        }

时间: 2024-08-15 08:06:30

事务处理拼接sql语句对数据库的操作.异常回滚的相关文章

SQL语句对数据库的操作

1.表建成后插入新列:alter table 表名 add 列名 nvarchar(50) not null 以实现插入新列,规定数值类型并规定不允许空值

3,SQL语句及数据库优化

 1,统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的. 所以封装成复用方法,用标准模板来控制. select*from dual select*From dual 其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析.生成2个执行计划 2,不要把SQL语句写得太复杂 我经常看到,从数据库中捕捉到的一条SQL语句打印出来有2张A4纸这么长.一般来说这么复杂的语句通常都是有问题的.我拿着这2页长的SQL语句去请教原作者,结果他说

java用字符串拼接SQL语句的特殊字符转义问题

在实际的项目开发中,往往会根据用户在界面的文本框中输入的信息,去数据库中做模糊查询.如果使用的是原始的JDBC和SQL,往往需要对用户的输入进行转义,避免生成的sql语法错误,或者防止SQL注入.比如对输入的%和_和',就需要进行转义,因为这3个字符是SQL的特殊字符,如果不处理会导致sql出错或者是查询数据不正确. 假如有这样1个查询请求,模糊查询标题中包含a%b_cc'd的记录,正确的sql应该是下面这样的: select * from t_sch_work_info t where t.t

SQL语句及数据库优化

1,统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的. 所以封装成复用方法,用标准模板来控制. select*from dual select*From dual 其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析.生成2个执行计划 2,不要把SQL语句写得太复杂 我经常看到,从数据库中捕捉到的一条SQL语句打印出来有2张A4纸这么长.一般来说这么复杂的语句通常都是有问题的.我拿着这2页长的SQL语句去请教原作者,结果他说时

使用表达式避免拼接SQL语句

在SQL语句编写过程中,无论在存储过程中还是在程序中,有时为了使语句兼容全部情况与某字段的特殊情况,不得不拼接SQL字串 如下表 商品ID 类别ID 1 1 2 1 3 2 4 3 5 3 如果我们要写一个SQL,改SQL可通过类别ID获得该类别的商品ID,并且要求兼容传入类别ID为0时获得所有商品,我们不得不拼接SQL了 --@类别ID为传入的参数 DECLARE @Sql NVARCHAR(500) SET @Sql='SELECT * FROM 商品' IF(@类别ID!=0) SET @

使用SQL语句建立数据库

使用SQL语句建立数据库 创建一个数据库有三个名称,第一个是Create后面的数据库名称,第二个是Name的逻辑名称,第三个是Filename的物理名称. A. 创建未指定文件的数据库 Create Database TestDB --TestDB 数据库名称--DBMS里用的是这个名 B. 创建指定数据和事务日志文件的数据库 Create Database TestDB --TestDB 数据库名称--DBMS里用的是这个名 On --On 代表数据文件组( --主要数据文件Name ='Te

2-06使用SQL语句创建数据库3

向现有数据库中添加文件组和数据文件几种方式以及步骤: 第一种:在视图下添加文件组和数据文件. 添加文件组的步骤: 右击你想要添加文件组的数据库点属性,然后点文件组就可以添加. 添加数据文件的步骤: 下面可以点击添加文件,打上名字就可以了. 第二种:使用SQL语句向数据库中添加文件组和数据文件. USE E_Market --添加文件组 FG1 ALTER DATABASE E_Market ADD FILEGROUP FG1 GO --为新建的文件组FG1添加数据文件 ALTER DATABAS

使用SQL语句清空数据库所有表的数据

近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER.1.搜索出所有表名,构造为一条SQL语句 declare @trun_name varchar(8000)set @trun_name='' select @trun_name=@trun_name + 'truncate table ' + [name] + ' ' from syso

SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集

ALTER PROCEDURE [dbo].[usp_visit_detail](@siteid BIGINT, @Startime VARCHAR(15), @Endtime  VARCHAR(15), @Aflag  INT = 10,                                    --初始值为10,非10,则表示有传入参数 @Area   VARCHAR(20) = 'N',               -- --初始值为N,非N,则表示有传入参数 @Nflag