2009-10-07 46 views
10

Tôi quan tâm đến việc hiển thị trong ứng dụng Windows Forms một danh sách các nút radio N cho người dùng để chọn máy chủ cơ sở dữ liệu đích. Tôi muốn thêm chuỗi kết nối SQL Server vào tệp app.config, vì vậy chúng được ứng dụng đọc vào thời gian chạy và được hiển thị dưới dạng cửa sổ dưới dạng nút radio.Nhiều chuỗi kết nối SQL Server trong tệp app.config

Lúc đầu, tôi nghĩ đến việc sử dụng một dấu phân cách để tách các kết nối

<appSettings> 
    <add key="ConnectionString" value="connection1|user id=user;password=123;server=10.0.0.1;database=myDatabase;connection timeout=30|connection2|user id=user;password=123;server=10.0.0.2;database=myDatabase;connection timeout=30"/> 
</appSettings> 

Và sau đó tách các cặp giá trị key.

Có thể thực hiện việc này theo cách khác không?

Trả lời

30

Để tìm tất cả các chuỗi kết nối được xác định từ ứng dụng của bạn.config, hãy sử dụng ConfigurationManager (từ System.Configuration).

Nó có một điều tra: ConfigurationManager.ConnectionStrings chứa tất cả các mục nhập trong số <connectionStrings> của bạn.

Bạn có thể lặp qua nó với mã này:

foreach(ConnectionStringSettings css in ConfigurationManager.ConnectionStrings) 
{ 
    string name = css.Name; 
    string connString = css.ConnectionString; 
    string provider = css.ProviderName; 
} 

Các Name chỉ là tên biểu tượng bạn cung cấp cho chuỗi kết nối của bạn - nó có thể là bất cứ điều gì, thực sự.

ConnectionString là chính chuỗi kết nối.

ProviderName là tên của nhà cung cấp cho kết nối, ví dụ: System.Data.SqlClient cho SQL Server (và những người khác cho hệ thống cơ sở dữ liệu khác). Nếu bạn bỏ qua thuộc tính providerName= từ chuỗi kết nối của bạn trong cấu hình, nó mặc định là SQL Server (System.Data.SqlClient).

Marc

+0

Nhận các chuỗi kết nối trong *** machine.config ***, không chỉ *** app.config *** – Kiquenet

3

Có, bạn có thể thực hiện việc này theo cách khác. Kiểm tra phần connectionStrings mà bạn có thể thực hiện trong tệp app.config.

<configuration> 
    <connectionStrings> 
     <add name="" connectionString=""/> 
     <add name="" connectionString=""/> 
    </connectionStrings> 
</configuration> 
+0

cách thế nào để tôi vòng máng con của phần tử "connectionStrings" để có được tất cả các cặp khóa giá trị? –

12

Sử dụng phần kết nốiStrings để xác định chuỗi kết nối của bạn.

<connectionStrings> 
    <add name="connection1" connectionString="user id=user;password=123;server=10.0.0.1;database=myDatabase;connection timeout=30"/> 
    <add name="connection2" connectionString="user id=user;password=123;server=10.0.0.2;database=myDatabase;connection timeout=30"/> 
</connectionStrings> 
+0

làm cách nào để lặp vòng máng con của phần tử "connectionStrings" để nhận tất cả các cặp giá trị khóa. –

+2

foreach (ConnectionStringSettings connSettings trong ConfigurationManager.ConnectionStrings) { } –

+0

nice! Tôi cần biết cách thêm thời gian chờ ... Cảm ơn! –

0

Bạn có thể sử dụng lớp AppSettings, có được một danh sách tất cả keys bắt đầu bằng ConnectionString và hiển thị chúng.

tập tin cấu hình của bạn sẽ trông như thế này:

<appSettings> 
    <add key="ConnectionString_Name1" value="..."/> 
    <add key="ConnectionString_Name2" value="..."/> 
    <add key="ConnectionString_Name3" value="..."/> 
</appSettings> 

Bạn có thể có được tên, bởi splitting tên chủ chốt (sử dụng "_" trong ví dụ này).

BTW: Bạn nên cũng sử dụng phần ConnectionStrings, bạn chỉ bị chặn trong chuỗi kết nối.

+1

Tôi chắc chắn sẽ khuyên bạn nên sử dụng phần '' trong app.config của bạn thay vào đó - đó là những gì nó thực sự ở đó! –

+1

@marc_s: Bạn đang phải – GvS

1

Chúng ta có thể tuyên bố nhiều chuỗi kết nối dưới Web.Config hoặc App.Config

<connectionStrings> 
<add name="SourceDB" connectionString="..." /> 
<add name="DestinationDB" connectionString="..." /> 
</connectionStrings> 

Trong Dal hoặc.cs nộp bạn có thể truy cập vào chuỗi kết nối như thế này string SounceConnection = ConfigurationManager.ConnectionStrings["SourceDB"].ConnectionString; string DestinationConnection = ConfigurationManager.ConnectionStrings["DestinationDB"].ConnectionString;

0

Đây là cách sử dụng LINQ để có được danh sách các chuỗi kết nối:

List<string> connectionStrings = ConfigurationManager.ConnectionStrings 
    .Cast<ConnectionStringSettings>() 
    .Select(v => v.ConnectionString) 
    .ToList(); 

Hoặc bạn có thể xây dựng một từ điển của nó:

Dictionary<string/*name*/, string/*connectionString*/> keyValue = ConfigurationManager.ConnectionStrings 
    .Cast<ConnectionStringSettings>() 
    .ToDictionary(v => v.Name, v => v.ConnectionString); 
Các vấn đề liên quan