Pergunta

Eu dei a seqüência acima, eu quero começar o ServerIPAddress, DB1, uid e **** estes valores dessa string.

Foi útil?

Solução

Não há necessidade de analisar uma seqüência de conexão quando o BCL pode fazê-lo para você:

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"];

Note que para uma cadeia de conexão OLE DB, nomes de propriedades somente as propriedades da cruz do provedor padrão já fortemente tipados, tudo o resto são acessados ??por meio do indexador.

Outras dicas

Não use um regex.

Analise a cadeia de conexão usando SqlConnectionStringBuilder e, em seguida, acessar as chaves a partir daí.

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

Muito mais fácil, mais sustentável e mais confiável.

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

Você tem então as partidas dos grupos 1 a 4. Se você se cansar você pode nomear os grupos; ajuda a legibilidade do código, embora raramente ajuda a legibilidade do próprio regex.

Não é mais fácil para o valor de divisão usando ';' caractere e, em seguida, dividir cada item por '=' char?

Desta forma, a cadeia de ligação poderia ser editados por usuários e fim item, mesmo poderia ser alterado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top