c# - tiempo - Cómo obtener el nombre de la base de datos de la cadena de conexión utilizando SqlConnectionStringBuilder
modificar el app config en tiempo de ejecucion vb net (7)
No quiero dividir la cadena de conexión utilizando la manipulación de cadenas y obtener servidor, base de datos, uid y contraseña.
Leí el siguiente enlace y leí la respuesta aceptada. Descubrí que es la mejor manera de sacar el ID de usuario y la contraseña de la cadena de conexión, pero ¿qué pasa con el Nombre de la base de datos?
¿La forma correcta de obtener el nombre de usuario y la contraseña de la cadena de conexión?
Cómo obtener el nombre de la base de datos de la cadena de conexión usando SqlConnectionStringBuilder. (¿DataSource es el nombre del servidor?)
Consulte la documentación de MSDN para la propiedad InitialCatalog :
Obtiene o establece el nombre de la base de datos asociada con la conexión ...
Esta propiedad corresponde a las claves "Catálogo inicial" y "base de datos" dentro de la cadena de conexión ...
El nombre de la base de datos es un valor de la propiedad SqlConnectionStringBuilder.InitialCatalog .
Puede usar InitialCatalog Property o el builder["Database"]
funciona. Lo probé con diferentes casos y todavía funciona.
Una alternativa mucho más simple es obtener la información del objeto de conexión en sí. Por ejemplo:
IDbConnection connection = new SqlConnection(connectionString);
var dbName = connection.Database;
De manera similar, también puede obtener el nombre del servidor del objeto de conexión.
DbConnection connection = new SqlConnection(connectionString);
var server = connection.DataSource;
esto te da el 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.
Puede usar la clase ConnectionStringBuilder específica del proveedor (dentro del espacio de nombre apropiado) o System.Data.Common.DbConnectionStringBuilder
para abstraer el objeto de la cadena de conexión si es necesario. Necesitaría conocer las palabras clave específicas del proveedor utilizadas para designar la información que está buscando, pero para un ejemplo de SQL Server podría hacer cualquiera de estas dos cosas:
System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);
string server = builder.DataSource;
string database = builder.InitialCatalog;
o
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;
string connectString = "Data Source=(local);" + "Integrated Security=true";
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);
Console.WriteLine("builder.InitialCatalog = " + builder.InitialCatalog);