图片 1

字段的数学生运动算(sql的数学生运动算卡塔尔国

+ –  *  / 

2. 在支付调节和测验阶段 抓最后SQL

 将Dapper 查询Query 和施行Execute 进行了再装进, 插入了 抓最后sql 的代码

 public class DapperTaller
    {

        /// <summary>
        /// dapper 执行查询 sql
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static IEnumerable<T> Query<T>(string sql, object param)
        {
            IEnumerable<T> result = null;
            using (var con = DBHelper.GetConnection())
            {
                result = con.Query<T>(sql, param);
            }

            //开发环境代码
            if (GlobalVariable.env.IsDevelopment()) //IsDevelopment 方法为Asp.NET Core 自带的 是否为开发环境的判断方法
            {
                //最终SQL
                var debugSql = GetDebugSQL(sql, param);
                Debug.WriteLine(debugSql);
            }

            return result;
        }

        /// <summary>
        /// dapper 执行 增加, 删除 ,修改 sql
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static int Execute(string sql, object param)
        {
            int result;
            using (var con = DBHelper.GetConnection())
            {
                result = con.Execute(sql, param);
            }

            //开发环境代码
            if (GlobalVariable.env.IsDevelopment()) //IsDevelopment 方法为Asp.NET Core 自带的 是否为开发环境的判断方法
            {
                //最终SQL
                var debugSql = GetDebugSQL(sql, param);
                Debug.WriteLine(debugSql);
            }

            //生产环境代码
            if (GlobalVariable.env.IsProduction())
            {
                //根据需要将最终SQL 记录到日志

            }

            return result;
        }

        public static string GetDebugSQL(string sql, object param)
        {
            var sqlHelper = new SqlHelper();
            foreach (var item in param.GetType().GetProperties())
            {
                var name = item.Name;
                var value = item.GetValue(param);
                sqlHelper.Param.Add(name, value);
            }

            sqlHelper.ReplaceParam(ref sql);
            return sql;
        }


    }

    public class DBHelper
    {
        public static IDbConnection GetConnection()
        {
            return SQLServerHelper.GetConnection();
        }
    }

调用代码:

 public IEnumerable<Ptype> GetPtypeDetail()
        {
            var sql = @"
 SELECT 
    * 
 FROM dbo.CoacherStudentMoney a
 INNER JOIN dbo.BaseData b ON a.CourseTypeId=b.Id
 WHERE 
 StudentUserId=@StudentUserId AND Amount=@Amount
 AND IsPay=@IsPay AND CreateDate=@CreateDate

";
            var param = new
            {
                StudentUserId = "001",
                CreateDate = DateTime.Now,
                Amount = 3,
                IsPay = true
            };

            IEnumerable<Ptype> plist = new List<Ptype>();
            plist = DapperTaller.Query<Ptype>(sql, param);

            return plist;
        }

 

最上边代码的这里为最后SQL 抓取

          //开发环境代码
            if (GlobalVariable.env.IsDevelopment())
            {
                //最终SQL
                var debugSql = GetDebugSQL(sql, param);
                Debug.WriteLine(debugSql);
            }

况且会在VS 的出口窗口输出

图片 2

越发方便了调节和测量检验.

 

把int类型的值更正为varchar类型的值

演示:把s_emp表中的id  first_name salary的数码查询出来

select  ID , FIRST_NAME , SALARY from  s_emp ;

图片 3

1.前言

上篇 写出易调节和测量试验的SQL ,
带给了生龙活虎部分谈谈, 洞穿了不可能重用实施安顿和sql注入难题,
拾贰分感谢园友们的建议 .

透过调度后 ,将原先的SQLHelper 抓SQL
用做调节和测量试验遭逢用, 发布意况照旧走Dapper的参数化查询, 保持原本优势.

见如下代码.

空值(NULL值)的处理

空值(NULL值卡塔尔国和其余值做运算结果都以NULL

3.最后

近期最终SQL 的抓取发生在 调节和测量试验开拓阶段
.

布告代码后, 将不会实行末段SQL的抓取.
并且走的大概Dapper 原有参数化查询的艺术, 如故有着举办安顿录取,
防SQL注入的优势.

 

注:

全体可进行代码见: 
   

本文代码是 AnuoApc.Data 项目下的 -> Dapper目录下的 ->
 DapperTaller.cs 文件, 可从这里开头看

 

作者: 蒋奎

博客: 

接待转载,请在引人注目地点给出出处及链接

身体力行:把各类职工的id  first_name manager_id展现出来,假使manager_id是NULL,就把manager_id显示成-1

select id, first_name, manager_id, nvl(manager_id, -1)

图片 4

什么样拼接字符串

字符串拼接符:| |(只针对oracle,其余的能够查一下卡塔 尔(阿拉伯语:قطر‎

在人名之间拼接八个单引号:

(在C语言中公布‘%’是%%,叁个%就是占位符,%d;这里是均等的,用三个’ 表示单引号卡塔尔

select first_name || ‘ ’’ ’ || last_name name  from  s_emp ;

图片 5

演示:从s_emp表中把每月报酬查询出来

select  salary  from s_emp ; (分号代表结束)

图片 6

发表评论

电子邮件地址不会被公开。 必填项已用*标注