首页 > 数据库 >SqlSugar使用AOP获取sql语句

SqlSugar使用AOP获取sql语句

时间:2024-11-18 10:42:42浏览次数:1  
标签:string currentDb AOP Value pars sql ToString SqlSugar

public ISqlSugarClient Db
{
get
{
//sql执行前
//_currentDb.Aop.OnLogExecuting = (sql, pars) =>
//{
// //string n1 = UtilMethods.GetNativeSql(sql, pars);//日志使用
// string n2 = UtilMethods.GetSqlString(DbType.Vastbase, sql, pars);//调试使用
// LogTextHelper.WriteLog_SqlLog("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n" + n2 + ";【sql执行前】耗时:" + _currentDb.Ado.SqlExecutionTime.TotalMilliseconds + "ms");
//};
////sql执行完
_currentDb.Aop.OnLogExecuted = (sql, pars) =>
{
if (_currentDb.Ado.SqlExecutionTime.TotalMilliseconds > 7 && !_currentDb.MappingTables.Any(c => c.EntityName.Contains("System")))//sql执行耗时大于20ms记录日志
{
//string n1 = UtilMethods.GetNativeSql(sql, pars);//日志使用
string n2 = UtilMethods.GetSqlString(DbType.Vastbase, sql, pars);//调试使用
LogTextHelper.WriteLog_SqlLog("sql执行完时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n" + n2 + ";【sql执行后】耗时:" + _currentDb.Ado.SqlExecutionTime.TotalMilliseconds + "ms");
}
};
//执行sql 错误事件
_currentDb.Aop.OnError = (exp) =>
{
var json = JsonConvert.SerializeObject(exp.Parametres);
// 解析JSON数据
JArray jsonArray = JArray.Parse(json);
string sql = exp.Sql;
// 遍历JSON数组
foreach (JObject jsonObject in jsonArray)
{
// 获取ParameterName和Value
string parameterName = jsonObject["ParameterName"]?.ToString();
string value = jsonObject["Value"]?.ToString();
// 创建一个正则表达式,确保只匹配完整的单词,并且以 @开头后跟字母
string pattern = @"@([a-zA-Z_][a-zA-Z0-9_]*)";
// 使用正则表达式替换字符串
sql = Regex.Replace(sql, pattern, m =>
{
if (m.Value == parameterName)
{
return "'" + value + "'";
}
return m.Value;
});
}
LogTextHelper.WriteLog_SqlLog("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "【错误】" + "\r\n【异常Sql】:" + sql);
};
return _currentDb;
}
}

 

标签:string,currentDb,AOP,Value,pars,sql,ToString,SqlSugar
From: https://www.cnblogs.com/9874lingxi/p/18551997

相关文章

  • 深入探索MySQL多表查询:连接查询与子查询的艺术
    深入探索MySQL多表查询:连接查询与子查询的艺术在数据库操作中,多表查询是一项常见且重要的任务。无论是为了获取更全面的数据,还是为了实现复杂的业务逻辑,多表查询都是不可或缺的工具。MySQL提供了两种主要的多表查询方式:连接查询和子查询。本文将深入探讨这两种查询方式的规律、优......
  • Windows10安装MySQL8.0.40
    官网地址https://www.mysql.com/环境查看Windows10MySQL8.0.40下载MySQL打开首页-下载-MySQL社区版本下载本次下载Window10的安装版本,其他系统如Linux,Mac可根据需要自行选择需要登录Oracle账号才能下载,如果没有账号则注册一个登录安装双击下载的软件开始......
  • 基于JavaSwing开发问卷调查系统源码(SQLServer数据库) 课程设计 大作业
    ......
  • 28. 使用MySQL之安全管理
    1.访问控制MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权。考虑以下内容:多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表;某些用户需要读表,但可能不需要更新表;你......
  • 【开窗函数】三个SQL题
             本文主要练习一下lag开窗函数的使用!!!一、第一题 建表语句:createtablem1(dtstring,namestring,deptstring,scoreint);insertintom1values('202101','张三','销售',90),('202101','李四......
  • 东胜物流软件 GetDataListCA SQL注入漏洞复现
    0x01产品简介东胜物流软件是青岛东胜伟业软件有限公司一款集订单管理、仓库管理、运输管理等多种功能于一体的物流管理软件。该公司初创于2004年11月(前身为青岛景宏物流信息技术有限公司),专注于航运物流相关环节的产品和服务。东胜物流信息管理系统货代版采用MS-SQLserver大型......
  • 计算机毕业设计在线购物商城超市购物系统日用品商城小商品在线购买网站php+mysql+html
     一.功能介绍用户前台功能:前台主要包括网站首页、今日特卖、限时打折、商品中心、常见问题、我的购物车、登录、注册、商品详情,联系卖家,加入购物车、结算、个人中心等功能模块。今日特卖、限时打折、商品中心模块,用户可以查看全部商品信息,联系卖家、选择商品进行添加购物......
  • php毕业设计购物商城在线购物系统美食购物商城外卖系统点餐系统美食网站php+mysql+htm
    一,功能介绍        前台主要包括网站首页、商品推荐、最新商品、新闻咨询、商品分类、商品资讯、评论、登录、注册、加入购物车、结算、个人中心等功能模块商品推荐、最新商品在商品推荐、最新商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等操作,购物......
  • 超实用的SpringAOP实战之日志记录
    本文主要以日志记录作为切入点,来讲解SpringAOP在实际项目开发中怎样更好的使项目业务代码更加简洁、开发更加高效。日志处理只是AOP其中一种应用场景,当你掌握了这一种场景,对于其它应用场景也可以游刃有余的应对。AOP常见的应用场景有:日志记录、异常处理、性能监控、事务管理、......
  • CTFWeb篇04-SQL注入
    SQL注入什么是SQL注入SQL注入就是指WEB应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数代入数据库查询,攻击者可以通过构造不同的SQL语句来是实现对数据库的任意操作。即通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串......