[.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:從零開始的軟體開發生活」
請大家繼續支持 ^_^