質問

上記の文字列を指定し、その文字列からserveripaddress、DB1、uidおよび****これらの値を取得したい。

役に立ちましたか?

解決

接続文字列を解析する必要はありませんが、BCLがあなたのためにそれを行うことができます:

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

OLE DB接続文字列の場合、標準のクロスプロバイダープロパティのみが厳密に型指定されたプロパティ名を持ち、残りはすべてインデクサー経由でアクセスされることに注意してください。

他のヒント

正規表現を使用しないでください。

SqlConnectionStringBuilderを使用して接続文字列を解析する から、そこからキーにアクセスします。

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

はるかに簡単で、メンテナンスしやすく、信頼性が高い。

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

グループ1から4に一致します。退屈した場合は、グループに名前を付けることができます。コードの可読性は向上しますが、正規表現自体の可読性はほとんど向上しません。

「;」を使用して値を分割するのは簡単ではありませんcharそして、すべての項目を「=」charで分割しますか?

これにより、ユーザーが接続文字列を編集し、アイテムの順序を変更することもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top