Question

J'ai donné la chaîne ci-dessus, je souhaite obtenir l'adresse serveripaddress, DB1, uid et **** ces valeurs à partir de cette chaîne.

Était-ce utile?

La solution

Il n'est pas nécessaire d'analyser une chaîne de connexion lorsque la BCL peut le faire pour vous:

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

Notez que pour une chaîne de connexion OLE DB, seules les propriétés de fournisseur croisées standard ont des noms de propriété fortement typés, tout le reste est accessible via l'indexeur.

Autres conseils

N'utilisez pas de regex.

Analyser la chaîne de connexion à l'aide de SqlConnectionStringBuilder , puis accédez aux clés correspondantes.

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

Beaucoup plus facile, plus facile à gérer et plus fiable.

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

Vous avez ensuite les correspondances dans les groupes 1 à 4. Si vous vous ennuyez, vous pouvez nommer les groupes; améliore la lisibilité du code, bien que rarement la lisibilité de l’expression rationnelle elle-même.

N’est-il pas plus facile de scinder la valeur en utilisant ';' char puis diviser chaque élément par '=' char?

Ainsi, votre chaîne de connexion pourrait être modifiée par les utilisateurs et même l'ordre des éléments pourrait être modifié.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top