2011-03-02 90 views
1

我已經在My Project中使用一個包含我需要運行我的程序的連接字符串詳細信息的表單創建一個XML文件。該XML的格式是這樣的:用連接字符串讀取XML文件

<xml encoding="UTF8"> 
<configuration> 
    <appsettings> 
    <servername>localhost</servername> 
    <serverport>1433</serverport> 
    <username>sa</username> 
    <password>thepassword</password> 
    <database>NorthWind</database> 
    </appsettings> 
</configuration> 
</xml> 

我需要使用PARAMS中的節點建立我的連接字符串運行查詢和轉儲一個Excel文件了。有人可以告訴我如何將此代碼寫入主窗體中的連接字符串中。

+0

沒有嘗試過任何東西只是不知道如何從我的XML參數建立一個連接字符串上面有點交叉眼睛我是新來的C# – 2011-03-02 02:09:31

回答

1

正確的方法是使用在app.config像這樣:http://msdn.microsoft.com/en-us/library/ms254494(v=VS.100).aspx

如果這不是你可以使用一些的LINQ到XML,如果你想(null檢查等,除外)選項: 哦,頂替「 MyConnectionStringFormatString「以適當的連接字符串格式:)。

XDocument doc = XDocument.Parse(xml); 

String conStr = 
    doc.Root 
    .Elements("configuration") 
    .Elements("appsettings") 
    .Select(
     s => 
      String.Format("MyConnectionStringFormatString {0}-{1}-{2}-{3}-{4}", 
      s.Elements("servername").Single().Value, 
      s.Elements("serverport").Single().Value, 
      s.Elements("username").Single().Value, 
      s.Elements("password").Single().Value, 
      s.Elements("database").Single().Value));  
+0

嗨戴夫,謝謝你,所以如果我讀了正確的,我需要將數據源替換爲MyConnectionStringFormatString,例如 「Data Source = servername,serverport; Network Library = DBMSSOCN; Initial Catalog = dataBase; User ID = username; Password = password;」 – 2011-03-02 00:45:53

+1

是的,但對於第一個返回的(servername)使用{0},對第二個(serverport)使用{1}等。 – DaveShaw 2011-03-02 09:36:22

2

就個人而言,我會建議使用內置(和首選方式)在.NET中執行此操作。有兩個方面: 1.使用application.config文件(或web.config for ASP.NET) 2.在這些配置文件上使用ConnectionStrings部分。

配置文件是存儲應用程序配置信息的首選方式,.NET有很多內置的支持。此外,還有對連接字符串的內置支持。例如,你的application.config文件(在Visual Studio中,右鍵單擊解決方案資源管理器中的項目節點並選擇「Add | New Item ...」,當該對話框打開時,選擇Application Configuration File)

<?xml version="1.0"?> 
<configuration> 
    <connectionStrings> 
    <add name="Orion" providerName="System.Data.SqlClient" connectionString="server=.\SQLEXPRESS;database=Orion;Integrated Security=True"/> 
    </connectionStrings> 
</configuration> 

注意connectionStrings部分。有一個條目(ConnectionStrings節點的一個子節點)。你可以在那裏給你想要的任何名字,並且該節點的connectionString屬性將包含你需要的連接字符串。我假設你知道連接字符串需要什麼。

現在,在您的應用程序,你會做這樣的事情:

internal partial class DataModule 
    { 
    private DbProviderFactory DbProviderFactory { get; set; } 
    private DbConnection DbConnection { get; set; } 

    public DataModule() 
    { 
     var connectionStringSettings = ConfigurationManager.ConnectionStrings["Orion"]; 
     DbProviderFactory = DbProviderFactories.GetFactory(connectionStringSettings.ProviderName); 
     DbConnection = DbProviderFactory.CreateConnection(); 
     DbConnection.ConnectionString = connectionStringSettings.ConnectionString; 
    } 
    } 

請注意,在這段代碼中,我引用了在這種情況下,連接「獵戶座」的「名」。請務必將其更改爲您提供連接的任何名稱。

此設計還允許您在配置文件和應用程序中定義多個「連接」,您可以選擇使用這些連接中的任何一個(或多個)。因此,例如:

<connectionStrings> 
    <add name="Orion" providerName="System.Data.SqlClient" connectionString="server=.\SQLEXPRESS;database=Orion;Integrated Security=True"/> 
    <add name="MyOtherOrion" providerName="System.Data.SqlClient" connectionString="server=myserver\myinstancename;database=Orion;uid=myusername;password=mypassword"/> 
    </connectionStrings> 

然後在你的應用程序,你可以只需切換到使用「MyOtherOrion」連接。