ConnectionString
からSqlCE
.sdfファイルを表す文字列からファイルパスを抽出する既存の方法がC#にありますか?私はファイルが初期化時に存在するかどうかをチェックし、ファイルが変更されていればそれをバックアップしたい。C# - 接続文字列からファイルパスを取得
サンプル接続文字列:
strConn = "Data Source=|DataDirectory|\dbAlias.sdf";
ConnectionString
からSqlCE
.sdfファイルを表す文字列からファイルパスを抽出する既存の方法がC#にありますか?私はファイルが初期化時に存在するかどうかをチェックし、ファイルが変更されていればそれをバックアップしたい。C# - 接続文字列からファイルパスを取得
サンプル接続文字列:
strConn = "Data Source=|DataDirectory|\dbAlias.sdf";
少し遅れて、おそらく、私は同じ問題に苦しんでこの質問を誘い込むに出くわしました。 |DataDirectory|
フォルダの場所はAppDomain.CurrentDomain.GetData("DataDirectory")
です。だからあなたたconnectionStringはこのように翻訳することができます:LocalDBとSqlConnectionオブジェクト(ないCE)のために
strConn .Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory").ToString())
あなたは、既存のSQLコンパクトの接続文字列を解析するSqlCeConnectionStringBuilderクラスを使用することができます。
あなただけの接続を作成し、プロパティとして、そこからデータソースを取得できます。
string data;
using (var conn = new SqlConnection(connectionString)) {
data = conn.DataSource;
}
+1を指定すると、 。 – Nix
私はまだ| DataDirectory |エイリアス。現在、私はそれを知っていますが、他のエイリアスについてはどうでしょうか。絶対パスは素晴らしいでしょう。 –
| DataDirectoryのような別のエイリアスはありますか? ? –
:
public static string GetFilePathFromConnectionString(string connectionString)
{
var attachDbFileName = new SqlConnectionStringBuilder(connectionString).AttachDBFilename;
return attachDbFileName.Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory").ToString());
}
彼が探しているのDataDirectoryが含まれているどのような性質彼に説明していいだろう。 – Nix
SqlCeConnectionStringBuilder.DataSourceは、物理パスではなく、 "| DataDirectory | \\ dbPerson.sdf"を再度指定します。 –
@Nix:AppDomain.CurrentDomain.SetData( "DataDirectory"、path); –