SqlConnectionStringBuilder का उपयोग करके कनेक्शन स्ट्रिंग से डेटाबेस का नाम कैसे प्राप्त करें


88

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

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

कनेक्शन स्ट्रिंग से उपयोगकर्ता नाम और पासवर्ड प्राप्त करने का सही तरीका?

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

जवाबों:


53

आरंभिक संपत्ति के लिए MSDN प्रलेखन देखें :

हो जाता है या कनेक्शन के साथ जुड़े डेटाबेस का नाम सेट करता है ...

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


148

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

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;

2
मेरे लिए, अंतिम पंक्ति के लिए आवश्यक है: string database = builder["Initial Catalog"] as string;- "डेटाबेस" एक अमान्य कीवर्ड था।
सांड्रा

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

32

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

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

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

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

यह वही है जिसे मैं देख रहा था। धन्यवाद।
इवान सैंटियागो

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

@AmitJoshi उन्हें लागू नहीं करना चाहिए IDbConnection?
नवाफाल

@nawfal: मैं सहमत हूं लेकिन फिर भी यह प्रयोग करने योग्य नहीं है। मैंने इस प्रश्न में विस्तार से बताया है। stackoverflow.com/q/47727524/5779732
अमित जोशी

यह डेटाबेस और डेटा स्रोत प्राप्त कर सकता है, लेकिन इस तरह से userId और पासवर्ड प्राप्त नहीं कर सकता है।
दशहरा

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

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);

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

7

यह आपको Xact देता है;

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.


4

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.