用日志记录LINQ中的所有增删改的SQL语句的方法_绿色软件之家

绿色软件之家:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|系统之家|纯净系统

您当前所在位置:首页数据库MSSQL → 用日志记录LINQ中的所有增删改的SQL语句的方法

用日志记录LINQ中的所有增删改的SQL语句的方法

时间:2015/6/28来源:绿色软件之家作者:网管联盟我要评论(0)

我们知道LINQ中的增删改都要调用SubmitChanges方法,我们记录所有SQL的方式就是重写(override)DataContext中的SubmitChanges方法,为了避免每次修改dbml文件时影响我们自己写的内容,我们要先写一个DataContext的分布类,在这个类中重写SubmitChanges方法。
代码如下
Code

public partial class DataClasses1DataContext
    {
  public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
  {
      //记录日志(每天一个文件,记录所有更改sql,日志会存在第一个盘的log文件夹下)
      string directory = Path.Combine(Directory.GetLogicalDrives().First(), "log");
      Directory.CreateDirectory(directory);
      string logFile = Path.Combine(directory,
    "log" + DateTime.Now.ToLongDateString() + ".txt");
      using (StreamWriter w = File.AppendText(logFile))
      {
  
    w.WriteLine("发生时间:{0}", DateTime.Now.ToString());
    w.WriteLine("日志内容为:");
    this.Log = w;
    try
    {
  base.SubmitChanges(failureMode);
    }
    catch (Exception e)
    {
  w.WriteLine("异常:" + e.Message + e.StackTrace);
  w.WriteLine("--------------------------------------------------------------");

  throw;
    }
    finally
    {
  this.Log = null;
    }
    w.WriteLine("--------------------------------------------------------------");

      }


  }
    }

如果想把sql语句全部记录到数据库的代码如下:

Code

public partial class DataClasses1DataContext
    {
  StringBuilder sb = new StringBuilder();
      using (StringWriter sw = new StringWriter(sb))
      {

    sw.WriteLine("发生时间:{0}", DateTime.Now.ToString());
    sw.WriteLine("日志内容为:");
    this.Log = sw;
    try
    {
  base.SubmitChanges(failureMode);
  string sqlStr = "insert into logTable(Content)values( '"+sb.ToString()+"')";
  //SqlConnection con=
  using (SqlConnection con=new SqlConnection(this.Connection.ConnectionString))
  {
      con.Open();
      SqlCommand cmd = new SqlCommand(sqlStr, con);
      cmd.ExecuteNonQuery();
  }

    }
    catch (Exception e)
    {
  //记录日志(每天一个文件,记录所有更改sql,日志会存在第一个盘的log文件夹下)

  string directory = Path.Combine(Directory.GetLogicalDrives().First(), "log");
  Directory.CreateDirectory(directory);
  string logFile = Path.Combine(directory,
      "log" + DateTime.Now.ToLongDateString() + ".txt");
  using (StreamWriter w = File.AppendText(logFile))
 

关键词标签:SQL语句

相关阅读

文章评论
发表评论

热门文章 SqlServer2005对现有数据进行分区具体步骤SqlServer2005对现有数据进行分区具体步骤sql server系统表损坏的解决方法sql server系统表损坏的解决方法MS-SQL2005服务器登录名、角色、数据库用户MS-SQL2005服务器登录名、角色、数据库用户Access、SQL Server、Oracle常见应用的区别Access、SQL Server、Oracle常见应用的区别

相关下载

人气排行 如何远程备份(还原)SQL2000数据库SQL2000数据库远程导入(导出)数据配置和注册ODBC数据源-odbc数据源配置教程SQL2000和SQL2005数据库服务端口查看或修改SQL Server 2005降级到2000的正确操作步骤修改Sql Server唯一约束教程浅谈JSP JDBC来连接SQL Server 2005的方法SQL Server创建表语句介绍