2009-04-01 53 views
10

Trong .Net có một lớp trong .Net nơi bạn có thể lấy tên DB và tất cả thông tin chuỗi kết nối mà không thực hiện chuỗi con trên chuỗi kết nối một cách chủ động không?Thông tin chuỗi kết nối cơ sở dữ liệu

EDIT:

tôi không tạo ra một kết nối Tôi đang cố gắng để có được thông tin ra khỏi chuỗi kết nối. Vì vậy, tôi về cơ bản tìm kiếm cái gì mà phải mất một arg chuỗi kết nối và có accessors để dbName, kiểu kết nối, vv ....

Trả lời

25

Bạn có thể sử dụng lớp ConnectionStringBuilder nhà cung cấp cụ thể (trong không gian tên thích hợp), hoặc System.Data.Common.DbConnectionStringBuilder để tóm tắt các đối tượng chuỗi kết nối nếu bạn cần. Bạn sẽ cần phải biết các từ khóa nhà cung cấp cụ thể sử dụng để chỉ những thông tin bạn đang tìm kiếm, nhưng đối với một ví dụ SQL Server bạn có thể làm một trong hai điều này:

Với

string connectionString = "Data Source = .\\SQLEXPRESS;Database=Northwind;Integrated Security=True;"; 

bạn có thể làm ...

System.Data.Common.DbConnectionStringBuilder builder = new System.Data.Common.DbConnectionStringBuilder(); 

builder.ConnectionString = connectionString; 

string server = builder["Data Source"] as string; 
string database = builder["Database"] as string; 

Hoặc

System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder(); 

builder.ConnectionString = connectionString; 

string server = builder.DataSource; 
string database = builder.InitialCatalog; 
+1

'System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder (connectionString);' – JohnB

0

Yep ConnectionInfo

http://msdn.microsoft.com/en-us/library/ms226340(VS.80).aspx

EDIT: Tôi, cùng với Chris, nhận ra rằng điều này chỉ hoạt động nếu bạn đã nhập các không gian tên Crystal Reports. Nếu không, tôi không chắc chắn

+0

thats một liên kết Crystal Reports ... –

3

Sau khi bạn khởi tạo kết nối bằng chuỗi kết nối, bạn có thể lấy các thông tin đó từ các thuộc tính của đối tượng kết nối được khởi tạo.

Kiểm tra System.Data.Common.DbConnection.

+0

Điều này đòi hỏi t mũ bạn tạo ra một đối tượng kết nối, có vẻ như quá mức cần thiết cho ứng dụng này. –

0
ConnectionInfo connectionInfo = new ConnectionInfo(); 
connectionInfo = logOnInfo.ConnectionInfo; 

connectionInfo.DatabaseName = database; 
connectionInfo.ServerName = server; 
connectionInfo.Password = password; 
connectionInfo.UserID = user; 

EDIT: Hình như Nathan đánh bại tôi vào nó, như tôi là từ cùng một trang.

EDIT AGAIN: Tôi nên lưu ý rằng ConnectionInfo nằm trong vùng tên CrystalDecisions.Shared. Đối với làm thế nào để có được nó từ một kết nối DB chung, tôi không chắc chắn.

+0

không phải là connectioninfo trong thư viện báo cáo tinh thể? –

+0

Đúng, nhận ra và chỉnh sửa. –

-3
SqlConnection sq = new SqlConnection(ConnectionString); 

Reference

Done với "sử dụng" tuyên bố (từ MSDN)

using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     connection.Open(); 
     // Do work here; connection closed on following line. 
    } 
+0

anh ấy đang tìm kiếm thông tin từ chuỗi kết nối mà không cần phân tích cú pháp. Điều này cho phép anh ta sử dụng kết nối, không xác định tên cơ sở dữ liệu là gì. –

+0

Bạn đang kết nối với cơ sở dữ liệu ... không có lý do gì mà anh ta phải làm điều đó. –

0

nếu bạn xây dựng chuỗi kết nối của bạn bằng trình tạo chuỗi kết nối (ví dụ OracleConnectionStringBuilde, và nó sẽ khác nhau cho cơ sở dữ liệu khác nhau), trong trường hợp đó dễ dàng lấy thông tin ra khỏi nó.

đây nó giải thích:

http://msdn.microsoft.com/en-us/library/ms254947.aspx

Các vấn đề liên quan