Domanda

Ho dato la stringa sopra, voglio ottenere il serveripaddress, DB1, uid e **** questi valori da quella stringa.

È stato utile?

Soluzione

Non è necessario analizzare una stringa di connessione quando il BCL può farlo per te:

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

Si noti che per una stringa di connessione OLE DB, solo le proprietà standard tra provider hanno nomi di proprietà fortemente tipizzati, a tutto il resto è possibile accedere tramite l'indicizzatore.

Altri suggerimenti

Non usare una regex.

Analizza la stringa di connessione utilizzando SqlConnectionStringBuilder e quindi accedi alle chiavi da quello.

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

Molto più facile, più gestibile e più affidabile.

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

Quindi hai le partite nei gruppi da 1 a 4. Se ti annoi puoi nominare i gruppi; aiuta la leggibilità del codice, anche se raramente aiuta la leggibilità della regex stessa.

Non è più facile dividere il valore usando ';' char e quindi dividere ogni elemento per '=' char?

In questo modo la stringa di connessione potrebbe essere modificata dagli utenti e persino l'ordine degli articoli potrebbe essere modificato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top