![](/img/trans.png)
[英]Changing dataset XSD in VS2010 generates code inheriting from DataTable instead of TypedTableBase<Type>
[英]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.