[.NET]透過LINQ to XML來處理不用LOG的SQL

[.NET]透過LINQ to XML來處理不用LOG的SQL

前言

目前要在系統底層的資料存取元件中加入LOG每次查詢的SQL,但是並不需要每個SQL都需要記錄下來。

所以就想要以XML格式來存放不需要LOG的SQL。

 

實作

目前想到的是先將一些不想LOG的類似SQL記錄下來,內容如下,


<?xml version="1.0"?>
<STOPLIST>
    <ITEM SQL="select dbo.fn_code_culture("></ITEM>
    <ITEM SQL="select GETDATE() as NOWTIME_F"></ITEM>
    <ITEM SQL=" select RTRIM(COD_ID) AS COD_ID,Rtrim(ISNULL(COD_ID,''))+N'-'+ISNULL(COD_VAL,'') AS COD_VAL  from dbo.fnCODE"></ITEM>
</STOPLIST>

 

在程式中,先將STOP LIST文件LOAD進XDocument物件之中(要using System.Xml.Linq),然後用Linq比較一下SQL是不是有在STOP LIST文件之中,有的話就不需要LOG。

C# 程式如下,


//SQL
string sqlText = @"select dbo.fn_code_culture(N'911101',N'C19640109000001',N'SCFUNITEM') AS FUN_NAME";
//STOP LIST XML FILE
string xmlFile = @"f:\StopList.xml";
XDocument stopListDoc = XDocument.Load(xmlFile);
bool isExistsStopList =
    (from item in stopListDoc.Descendants("ITEM")
     where sqlText.Contains((string)item.Attribute("SQL"))
     select item).Count() > 0;

 

VB.NET 程式如下,


'SQL
Dim sqlText As String = "select dbo.fn_code_culture(N'911101',N'C19640109000001',N'SCFUNITEM') AS FUN_NAME"
'STOP LIST XML FILE
Dim xmlFile As String = "f:\StopList.xml"
Dim stopListDoc As XDocument = XDocument.Load(xmlFile)
Dim isExistsStopList As Boolean =
    (From item In stopListDoc...<ITEM> _
    Where sqlText.Contains(item.@SQL) _
    Select item).Count > 0

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^