首页 > 数据库 >RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增记录SQL执行过程

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增记录SQL执行过程

时间:2023-06-13 16:34:28浏览次数:66  
标签:V3.2 string 记录 SystemInfo System fileName SQL NET commandText


  有时我们需要记录整个系统运行的SQL以作分析,特别是在上线前这对我们做内部测试也非常有帮助,当然记录SQL的方法有很多,也可以使用三方的组件。3.2版本我们在框架底层新增了记录框架运行的所有SQl过程保存到用户指定的地方以便分析查看,只需要在配置文件把配置项”LogSQL”设置为True即可。框架会自动记录各常用数据库如:Oracle、SqlServer、MySQL等的操作情况。

  一、Web记录Sql执行情况

  1、在我们的Web项目中要记录SQL可以在Web的配置文件中设置LogSql配置项为True,默认为False,配置文件的位置MVC项目是在RDIFramework.MvcApp项目根目录下的XmlConfig文件夹下的system.config文件,WebForm项目是在RDIFramework.WebApp项目根目录下的Web.Config文件,设置配置项如下图所示:

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增记录SQL执行过程_FileStream

  只要设置LogSQL为True,框架就会自动记录所有Sql执行过程并保存到指定目录,一般默认在Web项目根目录的Log文件夹下,如下图:

 

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增记录SQL执行过程_开发框架_02

  2、查看记录的Sql。

  打开一个文件,查年记录的Sql情况,如下:

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增记录SQL执行过程_FileStream_03

  二、WinForm记录Sql执行情况

  WinForm项目记录Sql与Web类似,一样的要修改Config.xml中的记录Sql的配置项,如下图所示。

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增记录SQL执行过程_.net_04

  通过上面的配置后,一样的我们打开框架做一些操作后查看记录的Sql情况,如下图:

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增记录SQL执行过程_C#_05

  三、公共方法调用

  如果我们需要单独记录sql的执行情况,可以调用框架提供的公共接口,如下图所示:

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增记录SQL执行过程_C#_06

  下面把写日志的三个公共接口分享,需要的可以参考哟。

 

#region public virtual void WriteLog(string commandText, string fileName = null) 写入sql查询句日志
        /// <summary>
        /// 写入sql查询句日志
        /// </summary>
        /// <param name="commandText"></param>
        public virtual void WriteLog(string commandText)
        {
            string fileName = DateTime.Now.ToString(SystemInfo.DateFormat) + " _ " + this.FileName;
            WriteLog(commandText, fileName);
        }
 
        /// <summary>
        /// 写入sql查询句日志
        /// </summary>
        /// <param name="commandText">异常</param>
        /// <param name="fileName">文件名</param>
        public virtual void WriteLog(string commandText, string fileName = null)
        {
            if (string.IsNullOrEmpty(fileName))
            {
                fileName = DateTime.Now.ToString(SystemInfo.DateFormat) + " _ " + this.FileName;
            }
            string returnValue = string.Empty;
            // 系统里应该可以配置是否记录异常现象
            if (!SystemInfo.LogSQL)
            {
                return;
            }
            // 将异常信息写入本地文件中
            string logDirectory = SystemInfo.StartupPath + @"\\Log\\Query";
            if (!System.IO.Directory.Exists(logDirectory))
            {
                System.IO.Directory.CreateDirectory(logDirectory);
            }
            string writerFileName = logDirectory + "\\" + fileName;
            if (!File.Exists(writerFileName))
            {
                FileStream FileStream = new FileStream(writerFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
                FileStream.Close();
            }
            StreamWriter streamWriter = new StreamWriter(writerFileName, true, Encoding.Default);
            streamWriter.WriteLine(DateTime.Now.ToString(SystemInfo.DateTimeFormat) + " " + commandText);
            streamWriter.Close();
        }
 
        public virtual void WriteLog(string commandText, IDbDataParameter[] dbParameters = null, string fileName = null)
        {
            // 系统里应该可以配置是否记录异常现象
            if (!SystemInfo.LogSQL)
            {
                return;
            }
            if (string.IsNullOrEmpty(fileName))
            {
                fileName = DateTime.Now.ToString(SystemInfo.DateFormat) + " _ " + FileName;
            }
            string message = string.Empty;
            message = DateTime.Now.ToString(SystemInfo.DateTimeFormat) + System.Environment.NewLine + "commandText内容" + System.Environment.NewLine + commandText;
            if (dbParameters != null)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var parameter in dbParameters)
                {
                    sb.AppendLine(parameter.ParameterName + "=" + parameter.Value);
                }
                message += System.Environment.NewLine + "dbParameters内容" + System.Environment.NewLine + sb.ToString();
            }
            string logDirectory = SystemInfo.StartupPath + @"\Log\Query";
            if (!System.IO.Directory.Exists(logDirectory))
            {
                System.IO.Directory.CreateDirectory(logDirectory);
            }
            string writerFileName = logDirectory + "\\" + fileName;
            if (!File.Exists(writerFileName))
            {
                FileStream FileStream = new FileStream(writerFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
                FileStream.Close();
            }
            StreamWriter streamWriter = new StreamWriter(writerFileName, true, Encoding.Default);
            streamWriter.WriteLine(DateTime.Now.ToString(SystemInfo.DateTimeFormat) + " " + message);
            streamWriter.Close();
        }
        #endregion

 


一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,大家可以通过下面的地址了解详情。

RDIFramework.NET官方博客:http://blog.rdiframework.net/

特别说明,框架相关的技术文章请以官方网站为准,欢迎大家收藏!

RDIFramework.NET框架由海南国思软件科技有限公司专业团队长期打造、一直在更新、一直在升级,请放心使用!

欢迎关注RDIFramework.NET框架官方微信公众号及时了解最新动态。

使用微信扫描二维码立即关注

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增记录SQL执行过程_RDIFramework.NET_07

标签:V3.2,string,记录,SystemInfo,System,fileName,SQL,NET,commandText
From: https://blog.51cto.com/guosisoft/6471342

相关文章

  • RDIFramework.NET平台代码生成器V3.2版本全新发布(提供下载-免费使用)
    最新RDIFramework.NET代码生成器全新V3.5版本发布-重大升级 回顾V3.1版本更新内容如下:1、增加对Oracle表创建语句的查看。2、新增对MySql的代码生成支持。3、全面重构对多线程的支持,改变以前会无故退出的现象。本次在V3.1版本的基础上,增加了代码生成器自动升......
  • SQLServer低版本附加高版本的数据库常用处理方法
    SqlServer低版本数据库不能直接还原或附加Sql高版本数据库或备份文件,我们常用DTS互导的方式,如果不同版本数据库不可访问,可以使用高版本数据库的DTS导出整个库的相应低版本建库脚本与数据,然后放在低版本数据库中去执行,常见如:我们库数据库一般是SqlServer2008+,有的客户使用的是2005版......
  • RDIFramework.NET V3.3 Web版角色授权管理新增角色对操作权限项、模块起止生效日期的
    在实际应用在我们可能会有这样的需求,某个操作权限项(按钮)或菜单在某个时间范围内可以让指定角色访问。此时通过我们的角色权限扩展设置就可以办到。在我们框架V3.3Web版本全新增加了角色权限扩展设置的功能。主要是针对角色对操作权限项、角色对模块在指定时间范围内有效的设置。功......
  • RDIFramework.NET V3.3 WinForm版角色授权管理新增角色对操作权限项、模块起止生效日
    在实际应用在我们可能会有这样的需求,某个操作权限项(按钮)或菜单在某个时间范围内可以让指定角色访问。此时通过我们的角色权限扩展设置就可以办到。在我们框架V3.3WinForm版全新增加了角色权限扩展设置的功能。主要是针对角色对操作权限项、角色对模块在指定时间范围内有效的设置。......
  • RDIFramework.NET代码生成器全新V3.5版本发布-重大升级
    发布说明RDIFramework.NET代码生成器V3.5版本全新震撼推出,相比上次版本,本次发布新增与修改的内容如下:1、全新增加了WinForm界面代码的生成,可直接生成常用的主界面(集新增、修改、删除、查询、分页、打印等常用功能)、编辑界面。真正加大了开发效率,相比以前的版本界面部分只是针对Web......
  • [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)
    [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)——通过知识共享树立个人品牌。继上六篇:       [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)      [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不......
  • RDIFramework.NET敏捷开发框架WinForm新增通用附件管理控件
    1、引言在WinForm开发中,文件附件的管理几乎在任何一个应用上都会存在,是一个非常通用集中的公共模块。我们日常记录会伴随着有图片、文档等附件形式来展现,如果为每个业务对象都做一个附件管理,或者每次开发系统都重新做,效率可想而知。一个通用的集上传,预览,管理为一体的集中式附件管理......
  • RDIFramework.NET敏捷开发框架Web新增邮件中心实现便捷式的邮件收发
    1、引言邮件收发在很多业务系统中都有这样的需求,是比较正式和常用的功能。在我们的框架中提供了邮件中心功能模块,集内部邮件的收发、邮件归类、邮件星标的标记、邮件的删除与彻底删除等,邮件中心功能模块界面如下。整个界面由顶部的功能按钮,左侧的邮件常用分类、右侧会对应的邮件列......
  • RDIFramework.NET敏捷开发框架 ━ 工作流程组件介绍
    RDIFramework.NET,基于全新.NETFramework与.NETCore的快速信息化系统敏捷开发、整合框架,给用户和开发者最佳的.Net框架部署方案。为企业快速构建垮平台、企业级的应用提供了强大支持。1、RDIFramework.NET敏捷开发框架介绍RDIFramework.NET敏捷开发框架,是我司重磅推出的基于全新.N......
  • RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录
    RDIFramework.NET,基于全新.NETFramework与.NETCore的快速信息化系统敏捷开发、整合框架,给用户和开发者最佳的.Net框架部署方案。为企业快速构建垮平台、企业级的应用提供了强大支持。最好用的.NETFramework与.NETCore开发框架,100%源码授权。RDIFramework.NETV5.1版本是10年深......