2012-05-11 14 views
67

का उपयोग कर कनेक्शन स्ट्रिंग से डेटाबेस नाम कैसे प्राप्त करें I स्ट्रिंग मैनिपुलेशन का उपयोग करके कनेक्शन स्ट्रिंग को विभाजित नहीं करना चाहते हैं और सर्वर, डेटाबेस, यूआईडी और पासवर्ड प्राप्त नहीं करना चाहते हैं।SqlConnectionStringBuilder

मैंने निम्न लिंक पढ़ा और स्वीकृत उत्तर पढ़ा, मैंने पाया कि कनेक्शन स्ट्रिंग से उपयोगकर्ता आईडी और पासवर्ड प्राप्त करने का सबसे अच्छा तरीका है, लेकिन डेटाबेस नाम के बारे में क्या?

Right way to get username and password from connection string?

कैसे SqlConnectionStringBuilder उपयोग करने वाला कनेक्शन स्ट्रिंग से डेटाबेस नाम मिलता है। (डेटा स्रोत सर्वर का नाम है करता है?)

उत्तर

40

देखें MSDN documentation for InitialCatalog Property:

हो जाता है या कनेक्शन से संबंधित डेटाबेस का नाम सेट ...

यह गुण "प्रारंभिक सूची से मेल खाती है "और" डेटाबेस "कुंजी कनेक्शन स्ट्रिंग के भीतर ...

3

आप InitialCatalog संपत्ति या builder["Database"] का भी उपयोग कर सकते हैं। मैंने इसे विभिन्न मामलों के साथ परीक्षण किया और यह अभी भी काम करता है।

8
string connectString = "Data Source=(local);" + "Integrated Security=true"; 

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString); 

Console.WriteLine("builder.InitialCatalog = " + builder.InitialCatalog); 
97

आप प्रदाता विशेष ConnectionStringBuilder वर्ग (उचित नाम स्थान के अंदर) के उपयोग कर सकते हैं, या सार कनेक्शन स्ट्रिंग वस्तु को System.Data.Common.DbConnectionStringBuilder आप करने की आवश्यकता है। आप जानकारी आप देख रहे हैं निर्माण में किया जाता प्रदाता-विशिष्ट कीवर्ड पता करने की जरूरत हैं, लेकिन उसके एसक्यूएल सर्वर उदाहरण के लिए आप इन दो चीजों में से किसी कर सकता है:

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

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

या

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

builder.ConnectionString = connectionString; 

string server = builder["Data Source"] as string; 
string database = builder["Initial Catalog"] as string; 
+1

मेरे लिए, अंतिम पंक्ति होने की आवश्यकता है: 'स्ट्रिंग डेटाबेस = निर्माता ["प्रारंभिक कैटलॉग"] स्ट्रिंग के रूप में; '-" डेटाबेस "एक अवैध कीवर्ड था। – Sandra

+0

@ सांड्रा हां आप सही। यदि हम SqlConnectionStringBuilder का उपयोग करते हैं तो स्ट्रिंग के रूप में निर्माता ["डेटाबेस"] काम करेगा। –

4

यह आपको एक्सएक्ट देता है;

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

connBuilder.ConnectionString = connectionString; 

string server = connBuilder.DataSource;   //-> this gives you the Server name. 
string database = connBuilder.InitialCatalog;  //-> this gives you the Db name. 
20

कनेक्शन ऑब्जेक्ट से जानकारी प्राप्त करना एक बहुत ही आसान विकल्प है। उदाहरण के लिए:

IDbConnection connection = new SqlConnection(connectionString); 
var dbName = connection.Database; 

इसी प्रकार आप कनेक्शन ऑब्जेक्ट से भी सर्वर का नाम प्राप्त कर सकते हैं।

DbConnection connection = new SqlConnection(connectionString); 
var server = connection.DataSource; 
+0

यही वह है जिसे मैं ढूंढ रहा था। धन्यवाद। –

+0

यह 'SqlConnection' के लिए विशिष्ट हो जाता है। क्या इस क्रॉस आरडीबीएमएस को बनाने के लिए कोई समान तरीका है? –

+0

@AmitJoshi क्या वे सभी 'आईडीबीकनेक्शन' लागू नहीं करना चाहिए? – nawfal