Строка подключения с относительным путем к файлу базы данных

Я загружаю данные из базы данных sdf в winforms App. Я использую полный путь к файлу базы данных. Пример :

conn = new SqlCeConnection { ConnectionString ="Data Source=F:\\My Documents\\Project1\\bin\\Debug\\Database.sdf" }; 

Мне нравится использовать относительный путь к файлу базы данных. Например. У меня есть файл sdf в папке F: \ My Documents \ Project1 \ bin \ Debug \ Data \ file.sdf, и я хочу использовать относительный путь в строке соединения. Любой совет ? Спасибо.

9 Solutions collect form web for “Строка подключения с относительным путем к файлу базы данных”

Относительный путь:

 ConnectionString = "Data Source=|DataDirectory|\Database.sdf"; 

Изменение DataDirectory в качестве пути исполняемого файла:

 string executable = System.Reflection.Assembly.GetExecutingAssembly().Location; string path = (System.IO.Path.GetDirectoryName(executable)); AppDomain.CurrentDomain.SetData("DataDirectory", path); 

Попробуйте этот код в рабочем каталоге, если файл базы данных существует, как показано ниже.

D: \ HMProject \ DataBase \ HMProject.sdf

 string Path = Environment.CurrentDirectory; string[] appPath = Path.Split(new string[] { "bin" }, StringSplitOptions.None); AppDomain.CurrentDomain.SetData("DataDirectory", appPath[0]); 

Строка подключения для файла .sdf

благодаря

ck.Nitin (TinTin)

Относительно чего, ваше приложение? Если это так, вы можете просто получить приложения current Path с:

 System.Environment.CurrentDirectory 

И добавьте его в строку подключения

После нескольких странных ошибок с относительными путями в строке соединения я почувствовал необходимость опубликовать это здесь.

При использовании «| DataDirectory |» или «~» вам не разрешено увеличивать и увеличивать использование «../»!

Пример состоит в том, что несколько проектов получают доступ к одному файлу localdb, размещенному в одном из проектов.

«~ /../ other» и «| DataDirectory | /../ other» не удастся

Даже если в MSDN четко написано здесь ошибки, которые он дал, где немного неясно, так сложно найти и не мог найти его здесь в SO.

  < ?xml version="1.0"?>       

Не могли бы вы попытаться использовать блок кода, который именно вы ищете:

 SqlConnection conn = new SqlConnection { ConnectionString = "Data Source=" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\Database.sdf" }; 

Это сработало для меня:

string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+HttpContext.Current.Server.MapPath("\\myPath\\myFile.db")+";Extended Properties=\"Excel 12.0 Xml;HDR=YES\"";

Я запрашиваю файл XLSX, поэтому не беспокойтесь о каком-либо другом материале в строке подключения, кроме источника данных.

Таким образом, HttpContext.Current.Server.MapPath("\\myPath\\myFile.db") является ответом.

В вашем файле конфигурации укажите относительный путь

 ConnectionString = "Data Source=|DataDirectory|\Database.sdf"; 

Измените DataDirectory на свой исполняемый путь

 string path = AppDomain.CurrentDomain.BaseDirectory; AppDomain.CurrentDomain.SetData("DataDirectory", path); 

Если вы используете EntityFramework, вы можете установить путь DataDirectory в своем classе Context

Я сделал это в файле web.config. Я добавил к ответу Собхана, спасибо кстати.

    

Где «db» становится моей базой данных вместо каталога «App_Data».

И открылся нормально с:

var db = Database.Open (“listdb”);

  • Можно ли использовать статический экземпляр java.sql.Connection в многопоточной системе?
  • HttpClient 4.0.1 - как освободить соединение?
  • Что именно влияет на URLConnection.setDoOutput ()?
  • Присоединение темы к себе
  • Почему при запуске URL-адреса возникает исключение «java.net.ConnectException: Connection timed out»?
  • Запустить командный файл с командой psql без пароля
  • Какой порт используется соединением Java RMI?
  • Java обнаруживает потерянное соединение
  • проверить подключение к Интернету в cocoa-приложении
  • Interesting Posts
    Давайте будем гением компьютера.