Открыть / создать sqlite в другой директории Windows

153
20 марта 2018, 01:49

Доброго времени суток.

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

Ф-ция открывающая базу:

using database = std::unique_ptr<sqlite3, decltype(&sqlite3_close)>;
database open_database(const char* name)
{
    sqlite3* db = nullptr;
    int rc = sqlite3_open(name, &db);
    if (rc != SQLITE_OK) {
        std::string S = (std::string)"Unable to open database '" + name + "': " +
            sqlite3_errmsg(db);
        sqlite3_close(db);
        throw std::exception(S.c_str());
    }
    return database{ db, sqlite3_close };
}

Вот эти запросы работают:

open_database("file:testMY_db.sqlite?cache=shared");
open_database("testMY_db.sqlite");

А запросы подобного стиля выдают ошибку: SQLITE_CANTOPEN .

open_database("file:///C:/Users/Андрей/Desktop/test_db.sqlite?cache=shared");
open_database("file:///C:/Users/Андрей/Desktop/test_db.sqlite");
open_database("file:/C:/Users/Андрей/Desktop/test_db.sqlite?cmode=rw");

Строки запросов делал по образцу с сайта https://www.sqlite.org/c3ref/open.html

Подскажите кто сталкивался, где ошибка таится ?

Answer 1

Строка вида open_database("file:///C:/Users/Андрей/Desktop/test_db.sqlite"); является правильной, однако она должна быть в кодировке UTF-8. По идее символы можно также закодировать через urlencode file:///C:/Users/%D0%90%D0%BD%D0%B4%D1%80%D0%B5%D0%B9/Desktop/test_db.sqlite

READ ALSO
Google test framework

Google test framework

У меня есть проект в Visual Studio, к которому написан тест, при помощи Google testСтатическая библиотека собрана от сюда, но как я сейчас начинаю понимать,...

193
SOCKET select некорректная работа

SOCKET select некорректная работа

Решил перестать циклом проверять все сокеты на наличие новых сообщений, и объединить всё в selectНо теперь абсолютно непонятная проблема, которая...

171
Проблема с установкой boost

Проблема с установкой boost

При установки boost через Command Prompt for VS, а именно при прописывании команды: b2exe, вылезает ошибка: ТЫЦ

167
std :: chrono Не пойму, как использовать

std :: chrono Не пойму, как использовать

Работаю над заданием по созданию игры "Танчики" (Battle city)И уже почти все готово, но не могу настроить скорость полета снарядов

155