Russian Qt Forum
Ноябрь 27, 2024, 16:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Относительный путь к базе данных  (Прочитано 4669 раз)
Alexsandr
Гость
« : Январь 15, 2012, 14:53 »

Возникла следующая проблема, файл бд лежит в папке с исходниками, если прописать полный путь всё работает, но если прописываю относительный путь бд не подключается. Бд добавлена в файл ресурсов, префикс "/".
Код:
inline bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
   db.setDatabaseName(":/DB.db");

    if(!db.open())
    {
        QMessageBox::critical(0,"Connection error!","Connection failed!");
        return false;
    }
    return true;
}
Но самое интересное, если закинуть бд в корень диска или флешки, и прописать путь:
Код:
db.setDatabaseName("/DB.db");
т.е. без двоетичия, то всё работает нормально.
Записан
andrew.k
Гость
« Ответ #1 : Январь 15, 2012, 14:59 »

Ну вот же точно такая тема два дня назад была.
Читай и делай выводы.
Записан
popper
Гость
« Ответ #2 : Январь 16, 2012, 00:09 »

Если БД закинута в файл ресурсов, то она может быть доступна только на чтение. Возможно, метод
Код:
db.open()
пытается получить доступ на чтение-запись, и получает отказ?
Попробуй перед открытием установить
Код:
db.setConnectOptions("QSQLITE_OPEN_READONLY");
Записан
interv
Гость
« Ответ #3 : Январь 16, 2012, 12:14 »

Скорее всего папка запуска не соответствует папки приложения, лечиться:
Код:
#include <QDebug>
#include <QDir>

  ...

qDebug()<<QDir::currentPath(); //Показываем текущюю папку
QDir::setCurrent(qApp->applicationDirPath()); //Меняем текущюю папку на папку приложения
qDebug()<<QDir::currentPath(); //Показываем текущюю папку

« Последнее редактирование: Январь 16, 2012, 12:16 от interv » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 21.