Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / sqlite3_open16 не создает файл базы данных, если файл не существует / 7 сообщений из 7, страница 1 из 1
22.09.2014, 12:30
    #38753371
YK13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlite3_open16 не создает файл базы данных, если файл не существует
Всем доброго времени суток
Собственно пробема в названии поста

Согасно документации sqlite3_open16() как и sqlite3_open() создает новый файл базы данных, если файл не существует. Однако на самом деле файл почему то не создается, хотя функция sqlite3_open16 возвращает SQLITE_OK
а также параметр sqlite3* не равен 0

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
sqlite3* Database;

if(sqlite3_open16(path.c_str(), &Database) != SQLITE_OK)
{
   cout << "Error: " << sqlite3_errmsg(Database) << endl;
   return 1;
}

cout << "Database open!" << endl;

sqlite3_close(Database);
cout << "Database closed!" << endl;



Не могу понять в чем проблема
Зараннее благодарен за совет
С уважением
YK13

PS. Использование sqlite3_open прошу не предлагать
...
Рейтинг: 0 / 0
22.09.2014, 13:21
    #38753446
YK13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlite3_open16 не создает файл базы данных, если файл не существует
решил проблему
path должен быть не string а wstring
...
Рейтинг: 0 / 0
22.09.2014, 18:06
    #38753832
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlite3_open16 не создает файл базы данных, если файл не существует
Неправильно ты читаешь документацию. Для sqlite3_open() путь должен быть в UTF-8, а для sqlite3_open16() путь должен быть в UTF-16.
А string там или wstring это дело десятое и зависящее от рантайм-библиотеки.
...
Рейтинг: 0 / 0
22.09.2014, 22:56
    #38754052
YK13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlite3_open16 не создает файл базы данных, если файл не существует
White OwlДля sqlite3_open() путь должен быть в UTF-8, а для sqlite3_open16() путь должен быть в UTF-16.


Я об этом не упомянул потому что это понятно для того кто читает документацию

Говоря о том, что должен быть wstring а не string, я имел ввиду что при использовании string у меня возникла проблема, которая описана в этой теме, и которая была решена при использовании wstring (точнее wchar_t*)
...
Рейтинг: 0 / 0
23.09.2014, 03:16
    #38754125
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlite3_open16 не создает файл базы данных, если файл не существует
YK13,

Ты не понял....
Не важно какой класс ты используешь. string или wstring это в данном случае совершенно не важно. Можно жить с любым из них (и string предпочтительнее).
Не важно какой тип данных ты используешь. char или wchar_t это совершенно вторично. Можно использовать любой из них.
Да, в твоем частном случае замена одного класса на другой волшебным образом спасло. Но это частный случай который может произойти только на MSVS и только при использовании std.

Важно то чтобы строка в памяти была записана в UTF-8 или UTF-16.
Причем обрати внимание, что любую UTF-8 строку можно прочитать как UTF-16. Поэтому, у тебя при использовании string выдавалось что файл создался, но ты его при этом не видел. Файл базы действительно создавался, но в каком каталоге и под каким именем ты узнаешь только если попытаешься перекодировать свою строку из UTF-8 в UTF-16. Ну или поищешь по своему диску файлы со странными именами.
...
Рейтинг: 0 / 0
23.09.2014, 10:50
    #38754325
PPA
PPA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlite3_open16 не создает файл базы данных, если файл не существует
White OwlПоэтому, у тебя при использовании string выдавалось что файл создался, но ты его при этом не видел. Файл базы действительно создавался, но в каком каталоге и под каким именем ты узнаешь только если попытаешься перекодировать свою строку из UTF-8 в UTF-16. Ну или поищешь по своему диску файлы со странными именами.

2 YK13 это действительно так? создавался файл с левым называнием и расположением?
...
Рейтинг: 0 / 0
23.09.2014, 17:37
    #38755068
YK13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlite3_open16 не создает файл базы данных, если файл не существует
PPA2 YK13 это действительно так? создавался файл с левым называнием и расположением?

Честно говоря, не успел проверить, так как проблема решилась вышеописанным способом. Но то, что при переводе в utf16 string (именно string а не wstring) в которой содержатся специальные символы (кириллица или например немецкие символы с умлаутами) эти символы заменяются на некорректные - это точно
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / sqlite3_open16 не создает файл базы данных, если файл не существует / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]