簡體   English   中英

在運行時vs2010更改數據集連接字符串

[英]Changing dataset connectionstring at runtime vs2010

我找到了一個解決方案,該解決方案必須適用於vs2010的舊版本。 我想知道vs2010怎么做? 有人知道嗎?

http://www.csharpbydesign.com/2008/01/overriding-dataset-settings-co.html

讓我解釋更多細節。

我有ac#生成的數據集。 如何更改連接字符串,以便可以將數據集與另一個(結構相同但填充不同的數據庫)一起使用? 這必須在運行時發生,因為在編譯時我不知道服務器或數據庫的名稱。 我正在使用vs2010和SQL Server 2008 R2 Express

我認為沒有簡單的方法,並且您不能以編程方式更改整個DataSet的Connection-String,因為它是為每個TableAdapter設置的。

由於Connection屬性是internal (如果您的DAL在不同的程序集中),因此您需要使用/創建TableAdapter的局部類來更改連接字符串。 不要更改designer.cs文件,因為它將在設計器上進行下一次更改后自動重新創建。 要創建它,只需右鍵單擊數據集並選擇“顯示代碼”。

例如(假設TableAdapter名為ProductTableAdapter ):

namespace WindowsFormsApplication1.DataSet1TableAdapters
{
    public partial class ProductTableAdapter 
    {
        public string ConnectionString {
            get { return Connection.ConnectionString; }
            set { Connection.ConnectionString = value; }
        }
    }
}

現在,您可以輕松更改它:

var productTableAdapter = new DataSet1TableAdapters.ProductTableAdapter();
productTableAdapter.ConnectionString = someOtherConnectionString;

這是我的示例數據集和創建的文件DataSet1.cs的畫面:

在此處輸入圖片說明

實際上,有一種更簡單的方法來更改連接字符串。 轉到“設置”屏幕,其中連接字符串顯示為連接字符串。 首先標記並復制顯示的連接字符串。 然后將類型從連接字符串更改為字符串。 字符串的文本將更改為包括xml。 然后將復制的連接字符串粘貼到xml文本上。 然后將范圍從“應用程序”更改為“用戶”。

當我想更改連接字符串時,請使用以下代碼。

// assign the path to use to the variable fullpath (or whatever)
string newConnection = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", fullpath);            
Properties.Settings.Default.HootConnectionString = newConnection;
Properties.Settings.Default.Save();

就我而言,我有一個活動的全局數據集,因此我必須使數據由tableadapter重新讀取。 並且,當然,您必須添加錯誤控制以確保數據庫仍然存在。

您會注意到,這不會更改“應用程序設置”中顯示的內容。 這些是默認值。

這適用於Access數據庫。 因此您的里程和要求可能會有所不同。

編輯:警告。 事實證明,安裝后,連接字符串可很好地用於打開和讀取數據庫內容,但它抱怨在嘗試更新數據庫時沒有連接字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM