C # - Получить путь к файлу из строки подключения - PullRequest
4 голосов
/ 04 августа 2011

Существует ли в C # метод извлечения пути к файлу из строки, представляющей файл ConnectionString в файл SqlCE .sdf ?Я хочу проверить, существует ли файл при инициализации, и создать резервную копию, если файл был изменен.

Пример строки подключения:

strConn = "Data Source=|DataDirectory|\dbAlias.sdf";

Ответы [ 4 ]

6 голосов
/ 04 августа 2011

Вы можете использовать SqlCeConnectionStringBuilder класс для анализа существующей строки соединения Sql Compact.

5 голосов
/ 08 мая 2012

Возможно, немного поздно, но я столкнулся с этим вопросом, когда борюсь с той же проблемой. Вы можете найти расположение папки |DataDirectory| с помощью AppDomain.CurrentDomain.GetData("DataDirectory"). Таким образом, ваша строка подключения может быть переведена следующим образом:

strConn .Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory").ToString())
5 голосов
/ 04 августа 2011

Вы можете просто создать соединение и получить источник данных из него как свойство:

string data;
using (var conn = new SqlConnection(connectionString)) {
    data = conn.DataSource;
}
0 голосов
/ 06 мая 2013

Для LocalDB и SqlConnection (не CE):

public static string GetFilePathFromConnectionString(string connectionString)
{
    var attachDbFileName = new SqlConnectionStringBuilder(connectionString).AttachDBFilename;
    return attachDbFileName.Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory").ToString());
}
...