Pregunta

Di la cadena anterior, quiero obtener la dirección del servidor, DB1, uid y **** estos valores de esa cadena.

¿Fue útil?

Solución

No es necesario analizar una cadena de conexión cuando el BCL puede hacerlo por usted:

var builder = new OleDbConnectionStringBuilder(connectionString);
var provider = builder.Provider;
var dataSource = builder.DataSource;
var initialCatalog = builder["Initial Catalog"];
var userID = builder["User ID"];
var password = builder["Password"];

Tenga en cuenta que para una cadena de conexión OLE DB, solo las propiedades estándar de proveedores cruzados tienen nombres de propiedad fuertemente tipados, se accede al resto a través del indexador.

Otros consejos

No use una expresión regular.

Analiza la cadena de conexión usando SqlConnectionStringBuilder y luego acceda a las claves desde eso.

var b = new SqlConnectionStringBuilder(myConnectionString);
var dataSource = b["Data Source"]; 
// etc.

Mucho más fácil, más fácil de mantener y más confiable.

data source=([^;]*);Initial Catalog=([^;]*);user id=([^;]*);Password=([^;"]*)

Luego tienes las coincidencias en los grupos 1 a 4. Si te aburres puedes nombrar los grupos; ayuda a la legibilidad del código, aunque rara vez ayuda a la legibilidad de la expresión regular en sí misma.

¿No es más fácil dividir el valor usando ';' char y luego dividir cada elemento por '=' char?

De esta forma, los usuarios pueden editar su cadena de conexión e incluso se puede cambiar el orden de los elementos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top