Skip to content

Instantly share code, notes, and snippets.

@LinZap
Last active October 19, 2023 02:21
Show Gist options
  • Save LinZap/158b604d89acf62ba104d03c4c53029c to your computer and use it in GitHub Desktop.
Save LinZap/158b604d89acf62ba104d03c4c53029c to your computer and use it in GitHub Desktop.
SQL 類別提供了自動變更 SQL 語法中 DB Name 的功能

SQL 類別提供了自動變更 SQL 語法中 DB Name 的功能

版本:ZapLib v2.4.5

新增了 SQL class 中的一個新方法 SQLDBReplace(),這個方法會在呼叫 QuickQuery, QuickExec ... 等執行語法的方法中自動執行,無需自行呼叫。 只需要在 Web.configApp.config 中進行設定,此方法就會檢查傳入的 SQL 語法是否包含 {DB Name}.dbo 的 pattern (格式), 如果存在的話就會取代成指定的 DB Name 後再傳入 SQL Server 執行,詳情請參閱以下說明:

啟用開關

請在 Web.configApp.config 先指定 SQLDBReplacetrue,此功能才會啟用

<configuration>
  <appSettings>
    <add key="SQLDBReplace" value="true"/>
  </appSettings>
</configuration>

設定範例

請在 Web.configApp.config 指定 key SQLDBReplace:{DB Name} 表示要取代的資料庫名稱,然後指定 value 表示要取代成甚麼 DB Name 資料庫名稱

原本的 DB Name 取代成新的 DB Name
KB52 CSKS_KM_KB52
KBH52 CSKS_KM_KBH52
<configuration>
 <appSettings>
   <add key="SQLDBReplace" value="true"/>
   <add key="SQLDBReplace:KB52" value="CSKS_KM_KB52"/>
   <add key="SQLDBReplace:KBH52" value="CSKS_KM_KBH52"/>
 </appSettings>
</configuration>

使用範例

所有 SQL 語法無須修改,以下示範設定後會將 SQL 改變的樣子

SQL db = new SQL();
dynamic[] data = db.QuickDynamicQuery("select* from KbH522.[DbO].Aud_Answer, [KbH52].[DbO].Aud_Answer");

實際執行語法

select* from KbH522.[DbO].Aud_Answer, CSKS_KM_KBH52.dbo.Aud_Answer

回 ZapLib v2.4.5 changelog

@LinZap
Copy link
Author

LinZap commented Oct 19, 2023

Test Cases

以下 SQL Patterns 均經過測試,如果有疏漏可以通報到 Issue

-- 修改前後
Update KBH522.dbo.Aud_Answer Set fa_sid
Update KBH522.dbo.Aud_Answer Set fa_sid

-- 修改前後
Update [AKBH52].dbo.Aud_Answer Set fa_sid
Update [AKBH52].dbo.Aud_Answer Set fa_sid

-- 修改前後
Update AKBH52.dbo.Aud_Answer Set fa_sid
Update AKBH52.dbo.Aud_Answer Set fa_sid

-- 修改前後
select* from KbH522.[DbO].Aud_Answer,
            AKbH52.[DbO].Aud_Answer
select* from KbH522.[DbO].Aud_Answer,
            AKbH52.[DbO].Aud_Answer

-- 修改前後
Update [KBH52].dbo.Aud_Answer Set fa_sid
Update CSKS_KM_KBH52.dbo.Aud_Answer Set fa_sid

-- 修改前後
Update kbh52.[dbo].Aud_Answer Set fa_sid
Update CSKS_KM_KBH52.dbo.Aud_Answer Set fa_sid

-- 修改前後
Update KbH52.DBO.Aud_Answer Set fa_sid
Update CSKS_KM_KBH52.dbo.Aud_Answer Set fa_sid

-- 修改前後
Update [KbH52   ].[DbO].Aud_Answer Set fa_sid
Update CSKS_KM_KBH52.dbo.Aud_Answer Set fa_sid

-- 修改前後
select * from [KbH52].[DbO].Aud_Answer c,[KbH52].[DbO].Aud_Answer d
select * from CSKS_KM_KBH52.dbo.Aud_Answer c, CSKS_KM_KBH52.dbo.Aud_Answer d

-- 修改前後
select* from KbH52.[DbO].Aud_Answer,[KbH52].[DbO].Aud_Answer
select* from CSKS_KM_KBH52.dbo.Aud_Answer, CSKS_KM_KBH52.dbo.Aud_Answer

-- 修改前後
select* from KbH52.[DbO].Aud_Answer, 
             [KbH52].[DbO].Aud_Answer
select* from CSKS_KM_KBH52.dbo.Aud_Answer, CSKS_KM_KBH52.dbo.Aud_Answer

-- 修改前後
select* from KbH52.[DbO].Aud_Answer,
            [bH522].[DbO].Aud_Answer
select* from CSKS_KM_KBH52.dbo.Aud_Answer,
            [bH522].[DbO].Aud_Answer

-- 修改前後
select* from KbH522.[DbO].Aud_Answer, [KbH52].[DbO].Aud_Answer
select* from KbH522.[DbO].Aud_Answer, CSKS_KM_KBH52.dbo.Aud_Answer

-- 修改前後
Update KBH52 . dbo.Aud_Answer Set fa_sid
Update CSKS_KM_KBH52.dbo.Aud_Answer Set fa_sid

-- 修改前後
Update[KBH52].dbo.Aud_Answer Set fa_sid
Update CSKS_KM_KBH52.dbo.Aud_Answer Set fa_sid

-- 修改前後
Update kbh52.  [dbo].Aud_Answer Set fa_sid
Update CSKS_KM_KBH52.dbo.Aud_Answer Set fa_sid

-- 修改前後
Update kbh52.	[dbo].Aud_Answer Set fa_sid
Update CSKS_KM_KBH52.dbo.Aud_Answer Set fa_sid

-- 修改前後
Update kbh52.


            [dbo].Aud_Answer Set fa_sid
Update CSKS_KM_KBH52.dbo.Aud_Answer Set fa_sid

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment