2012-04-17 33 views
0

OK我在這裏的一段代碼常用的代碼行,在許多地方在C#

MySqlConnection conn = new MySqlConnection("Userid=root;pwd=root;port=3306;host=localhost;database=test"); 
conn.Open(); 

整合由於一些問題與devart連接器的新版本,我使用我必須添加一行如下圖所示

OldCompatibility.BinaryAsString = true; 
MySqlConnection conn = new MySqlConnectio("User id=root;pwd=root;port=3306;host=localhost;database=test"); 
conn.Open(); 

代碼OldCompatibility.BinaryAsString = true; 無處不在我的代碼,但問題是我必須做出這種改變都在我的應用程序,它與這片code.So的很多頁面有沒有辦法在全球範圍內做到這一點這樣我就不必一直做這個改變我的應用程序。 我使用devart連接器6

+0

未來,你會想寫一個函數來創建連接和集中代碼:)。現在:您是否有任何基礎課程或任何對所有頁面都通用的課程?您可能希望將此行放入由每個頁面調用的函數中。 – 2012-04-17 04:31:30

回答

4

假設你的連接是遠程類似每次;別。將所有連接邏輯保存在一個共享方法中,並使用它來代替在任何地方重複連接代碼。

public static MySqlConnection Connect() { 
    OldCompatibility.BinaryAsString = true; 
    MySqlConnection conn = new MySqlConnection("User id=root;pwd=root;port=3306;host=localhost;database=test"); 
    conn.Open(); 

    return conn; 
} 
+0

的答案以及在我的應用程序中,我沒有使用任何自定義方法,如連接,所以它不可能做dat方式因爲如果我做巢穴我將不得不改變它無處不在 – Jay 2012-04-17 04:34:41

+1

@Jay:就是這一點。無論哪種情況,您都必須對其進行更改 - 您可以使用「查找和替換」來幫助您完成此操作,就是這樣。但是如果/當你不得不再次改變它,你*不會在任何地方改變它。只需使用一種方法,保持[DRY](http://en.wikipedia.org/wiki/Don't_repeat_yourself「不要重複自己」)。 – Ryan 2012-04-17 04:36:40

1

MySqlConnection將您的自定義類,如果你把OldCompatibility.BinaryAsString =真在的MySqlConnection的構造函數,然後它會工作

+2

我認爲MySQLConnection是.Net的MYSQl驅動程序的一個類。 – 2012-04-17 04:27:36

+0

然後創建一個新類MyCustomSQLConnection,它圍繞着MySQLConnection,然後它將爲您的事業服務 – Adil 2012-04-17 04:29:10

+0

1)哪些地方會再次需要更改2)不確定它是密封的還是可以繼承的。 – 2012-04-17 04:32:44

0

您可以找到曾經使用factory method

public class FactoryMethods 
{ 
    public static MySqlConnection GetConfiguredConnection() 
    { 
    OldCompatibility.BinaryAsString = true; 
    MySqlConnection conn = new MySqlConnectio("User id=root;pwd=root;port=3306;host=localhost;database=test"); 
    conn.Open(); 
    return conn; 
    } 
} 

並假設連接IDispose,能夠

using (var myConn = FactoryMethods.GetConfiguredConnection()) 
{ 
    // Use your connection here 
} 
+1

雖然這是做到這一點的正確方法,但他需要在任何地方進行改變。如果海報可以忍受,那麼我也會回答這個問題。 – 2012-04-17 04:33:34

+0

@nonnb無法這樣做,因爲這需要我對我的項目進行更改 – Jay 2012-04-17 04:36:17

+0

DevArt是否有一個web.config設置,您可以在其中全局調整兼容性選項?將來會建議您封裝和/或注入像SQL連接字符串這樣的複雜對象的創建,以防止這種維護問題。 – StuartLC 2012-04-17 04:41:38

0

更改所有的代碼,並使用正則表達式替換:

1.-按Ctrl + H打開「查找和替換」窗口輸入您的搜索,用「\ n」替換換行符(不包括引號)

2.-展開「查找選項」並選中「使用」,選擇「正則表達式」(這也會激活「Find what」旁邊的右箭頭)框。它列出了一些命令/快捷鍵)。

例如: 類型本上發現:

{MySqlConnection conn = new MySqlConnection} 

然後試試這件替換:

OldCompatibility.BinaryAsString = true;\n\t\t\1 MySqlConnection conn = new MySqlConnection 

這會發現所有的搜索相匹配的代碼,並添加額外的線路盈的它。請注意佔位符{...}正在用\ 1

0

代替你應該真的考慮@ MiniTech移動的使用方法的建議,但如果你真的不能在任何地方更改代碼,只有真正我可以看到兩個選項;

  • 在另一個命名空間使用相同的名稱,只是改變構造,包括您的直線延伸的MySqlConnection新的一類。然後只替換文件頂部的using行。

  • 如果無法完成,請以相同方式實現包裝類。

這兩種選項可能無法正常工作(#1,如果類是final例如,和#2如果類作爲參數傳遞給任何功能通過),但除非你至少可以做一個全球用一種方法搜索/替換或實現@ minitech的建議,我看不到其他任何方式。

相關問題