2009-04-01 16 views
10

En .Net hay una clase en .Net donde puede obtener el nombre de base de datos y toda la información de cadena de conexión sin hacer una subcadena en la cadena de conexión?Cadena de conexión de base de datos Información

EDIT:

No estoy creando una conexión que estoy tratando de obtener información de la cadena de conexión. Así que estoy básicamente en busca de algo que toma un arg cadena de conexión y tiene descriptores de acceso a dbName, tipo de conexión, etc ....

Respuesta

25

Usted puede utilizar la clase ConnectionStringBuilder específico del proveedor (en el espacio de nombre adecuado), o System.Data.Common.DbConnectionStringBuilder para abstraer el objeto cadena de conexión si es necesario. Que había necesidad de conocer las palabras clave específicas del proveedor utilizados para designar la información que está buscando, pero para un ejemplo de SQL Server que podría hacer cualquiera de estas dos cosas:

Dadas

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

usted podría hacer ...

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; 

O

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

3

Después de inicializar la conexión con la cadena de conexión, puede obtener esa información de las propiedades del objeto de conexión inicializado.

Comprueba System.Data.Common.DbConnection.

+0

Esto requiere t Si crea un objeto de conexión, que parece exagerado para esta aplicación. –

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

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

EDITAR: Parece que Nathan me ganó de mano, como el mío es de la misma página.

EDIT OTRA VEZ: Debo señalar que ConnectionInfo está en el espacio de nombres CrystalDecisions.Shared. En cuanto a cómo obtenerlo de una conexión DB genérica, no estoy seguro.

+0

no es connectioninfo en la biblioteca de informes de cristal? –

+0

Sí, se dio cuenta y se editó. –

-3
SqlConnection sq = new SqlConnection(ConnectionString); 

Reference

Hecho con el "uso" declaración (de MSDN)

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

busca obtener información de la conexión sin análisis. Esto le permite usar la conexión, no determinar cuál es el nombre de la base de datos. –

+0

Te estás conectando a la base de datos ... no hay ninguna razón por la que debería tener que hacer eso. –

0

si se construye la cadena de conexión con el generador de cadenas de conexión (por ejemplo OracleConnectionStringBuilde, y será diferente para diferente base de datos), en ese caso recuperar fácilmente la información de ella.

aquí se explicó:

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

Cuestiones relacionadas