С помощью System.Data.SQLite, как указать файл базы данных в строке подключения, используя относительный путь

Желая развернуть мой проект на разных серверах, я бы предпочел указать строку подключения, используя относительный путь. Кажется, я не могу заставить это работать и хочу знать, есть ли в этом какой-то трюк ...?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
16 507
3

Ответы 3

Предложение

Вы можете создать абсолютный путь в приложении и передать его в строке подключения.

Итак, если вы знаете, что файл базы данных находится в подпапке database папки приложения, вы можете сделать что-то вроде этого (C#):

    string relativePath = @"database\myfile.s3db";
    string currentPath;
    string absolutePath;
    string connectionString;

    currentPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
    absolutePath = System.IO.Path.Combine(currentPath,relativePath);

    connectionString = string.Format("DataSource = {0}", absolutePath);

    SQLiteConnection cnn = new SQLiteConnection(connectionString);

(Кто-то, наверное, поправит меня, как получить текущий путь).

Юк, не используйте пространство имен отражения, чтобы получить базовый путь. использование: AppDomain.CurrentDomain.BaseDirectory

Todd 10.10.2016 14:57

Нравится:

Строка currentPath = System.IO.Path.GetDirectoryName (Application.ExecutablePath);

Как насчет этого?

"Data Source=|DataDirectory|mydb.db;..."

Я считаю, что |DataDirectory| указывает на каталог, в котором находится ваше приложение. Я использую NHibernate, и он работает со следующим:

<add key = "hibernate.connection.connection_string"
       value = "Data Source=|DataDirectory|mydb.db;Version=3;Compress=False;synchronous=OFF;" >

Это был бы правильный метод, за исключением того, что он не поддерживает время разработки, так как ваша программа будет работать в режимах отладки и в режимах выпуска, но при попытке изменить определения набора данных она вылетает с сообщением «невозможно подключиться к БД». это известная ошибка в SQLITe.

Karl 03.02.2009 21:44

Другие вопросы по теме