Обсуждение статьи "SQL и MQL5: Работаем с базой данных SQLite" - страница 4

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Viktar Dzemikhau
3328
Viktar Dzemikhau  
Andrey Azatskiy:
У меня очень интересная ситуация) буквально вчера все создавалось и работало (правда от чего то в папке "Загрузки") Но, за ночь файл базы перестал создаваться, однако сама база работает как надо для тестов пробовал создать базу размещенную в памяти sqlite3_open(":memory:") - база создается, данные загружаются / считываются. 

Возможно проблема с правами доступа, как считаете? как бы это в виндовс проверить знает кто? 

Это легко проверить, на самом деле. Попробуй для начала в "Мои документы" запихнуть БД. Если получится, значит дело не в правах. А вообще, смотря как ты это всё делал. Я лично недели 2 продолбался, пока создал себе всё что нужно для работы с SQLite3. Пришлось переводить документацию, т.к. на русском языке нет адекватной информации по этому поводу. Как и в этой статье много мусора и левака. Выше я привл один из моментов. Потом я забил и сам изучил вопрос.

У меня есть для этого такой wrapper:

//==================================================================================================================================================================================
// Basic wrapper for sqlite3_open_v2. ==============================================================================================================================================
int SQLite3 :: sqlite3_open(const string& filename, intptr_t& dbHandle, int flags) {
  uchar utf8_filename[];
  stringToUtf8(filename, utf8_filename);
  return sqlite3_open_v2(utf8_filename, dbHandle, flags, 0);
}

А вот и функция stringToUtf8:

//==================================================================================================================================================================================
// Convert a string to a utf-8 byte array. =========================================================================================================================================
void stringToUtf8(const string strToConvert,                     // Строка, которую необходимо преобразовать в массив в кодировке utf-8
                  uchar& utf8[],                                 // Массив в кодировке utf-8, в который будет помещена преобразованная строка strToConvert
                  const bool untilTerminator = true) export {    // Количество символов, которые будут скопированы в массив utf8 и соот-но преобразованны в кодировку utf-8
//---
  int count = untilTerminator ? -1 : StringLen(strToConvert);
  StringToCharArray(strToConvert, utf8, 0, count, CP_UTF8);
}

Она у меня в отдельной библиотеке.

Andrey Azatskiy
740
Andrey Azatskiy  
Viktar Dzemikhau:

Это легко проверить, на самом деле. Попробуй для начала в "Мои документы" запихнуть БД. Если получится, значит дело не в правах. А вообще, смотря как ты это всё делал. Я лично недели 2 продолбался, пока создал себе всё что нужно для работы с SQLite3. Пришлось переводить документацию, т.к. на русском языке нет адекватной информации по этому поводу. Как и в этой статье много мусора и левака. Выше я привл один из моментов. Потом я забил и сам изучил вопрос.

У меня есть для этого такой wrapper:

А вот и функция stringToUtf8:

Она у меня в отдельной библиотеке.

Да, у меня было 2 ошибки:
1 - кодировка (спасибо огромное за функцию, я уже не знал как перевести нормально в UTF -8) 
2 - права доступа. 


Viktar Dzemikhau
3328
Viktar Dzemikhau  
Andrey Azatskiy:

Да, у меня было 2 ошибки:
1 - кодировка (спасибо огромное за функцию, я уже не знал как перевести нормально в UTF -8) 
2 - права доступа. 


Да, пожалуйста. Сам вспоминаю, сколько продолбался с этим. С такими горе-статьями.. Вариант один есть. Берёшь читаешь оф. документацию, либо спрашиваешь.. Спрашивать было не у кого. Пришлось изучать самостоятельно. Тут суть в том, что если писать на С++ спросить есть у кого. А когда через прокладку писать и передавать в мкл, тут уже мало кто может помочь. Влом плюсовцам в этом вникать))

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий