2014-06-10 14 views
1

連接我用這樣的事情對我的申請使用MySQL與Visual Studio和改變在運行時

MySqlConnection cnn = new MySqlConnection("Server=myServerAddress;" + 
              "Database=myDataBase;" + 
              "Uid=myUsername;" + 
              "Pwd=myPassword;"); 

因爲我們與我們的應用部署的數據庫這改變每次。 它工作正常。我輸入using(new connection(cnn)){ query... }然後去。 我已經使用在Windows ODBC數據管理員中定義的連接來處理數據集。 但我很好奇,有沒有辦法使用我的本地測試數據庫使用visual studio的數據集項,然後在運行時更改數據集的連接?更好的是,我可以使用c#以編程方式在運行時添加ODBC數據源嗎?

+0

是否有一個原因,你不能指向你的測試數據庫的ODBC連接,然後有一個具有相同名稱的ODBC連接指向生產數據庫以後呢? –

+0

當你可以將連接字符串存儲在應用程序的配置中時,有什麼理由使用ODBC數據源? http://msdn.microsoft.com/en-us/library/vstudio/ms254494(v=vs.100).aspx – Steve

+0

我在過去使用生產數據庫具有相同名稱的ODBC連接。我只是不喜歡它,因爲這是安裝時的一個額外步驟,這就是爲什麼我想知道是否可以通過編程來定義它。 –

回答

0

通常連接字符串是從應用程序的相同文件夾中存在的應用程序exe.config文件加載的。該連接字符串可以使用項目屬性中的設置選項卡進行定義。

  • 右鍵點擊你的項目的性質
  • 選擇設置選項卡(確認創建,如果你沒有 設置)
  • 單擊列型組合框,然後選擇連接字符串
  • 給符號名稱的連接
  • 類型值列連接字符串(在 connectionstrings.com例子)

現在,在您的項目文件,你應該有該文件的app.config(即變得yourapp.exe.config)哪裏有這樣的

<configuration> 
    <connectionStrings> 
    <add name="MyAppConnection" 
     connectionString="Server=myServerAddress;Database=myDB;Uid=user;Pwd=pass;" /> 
    </connectionStrings> 
</configuration 

一款此時您在使用

程序閱讀
string conString = ConfigurationManager 
         .ConnectionStrings["MyAppConnection"] 
         .ConnectionString; 

相反,在你想在運行時建立自己的連接字符串動態情況下(從用戶輸入自己的配置文件等),那麼你可以利用類MySqlConnectionStringBuilder的功能

MySqlConnectionStringBuilder msb = new MySqlConnectionStringBuilder(); 
msb.Server = "localhost"; 
msb.Port = 3306; 
msb.UserID = "root"; 
msb.Password = "xxx"; 
msb.Database = "test"; 
MySqlConnection cnn = new MySqlConnection(msb.ConnectionString); 
cnn.Open(); 

當然,這些文字值可以被你自己的變量替代。 這個類的文檔很難找到。最好的文檔是Sql Server equivalent之一。有趣的是,您可以從配置文件中讀取靜態連接字符串,然後只更改所需的屬性。

string conString = ConfigurationManager 
        .ConnectionStrings["MyAppConnection"] 
        .ConnectionString; 
MySqlConnectionStringBuilder msb = new MySqlConnectionStringBuilder(conString); 
msb.Database = "AnotherDB"; 
MySqlConnection cnn = new MySqlConnection(msb.ConnectionString); 
+0

但我的問題是它是隻讀的。我得到你所說的關於手動或安裝時更改它的說法,因爲我可以編輯配置文件。但是,我如何設置它,以便例如將serveraddress設置爲變量。 (我現在將它作爲字符串存儲在配置文件中,並使用'properties.settings.default.serveraddress =「...」;編輯它;' –

+0

好吧,這是一個動態的情況。然後是MySqlConnectionStringBuilder類來拯救我在 – Steve

+0

上面寫了一個例子謝謝,我會試試這個! –

相關問題