//--- INCLUDES #include <MQH\Lib\SQLite3\SQLite3Base.mqh>
//--- VARIABLES
CSQLite3Base sql3;
CSQLite3Table testTable;
CSQLite3Cell testCell;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnStart()
{
//--- OPEN DATABASE CONNECTIONif(sql3.Connect("test.db3")!=SQLITE_OK)
{Print(sql3.ErrorMsg()); DebugBreak(); return;}
elsePrint("CONNECTED TO DB.");
//--- CEATE TABLEif(sql3.Query("DROP TABLE IF EXISTS [test]")!=SQLITE_DONE)
{Print(sql3.ErrorMsg()); DebugBreak(); return;}
if(sql3.Query("CREATE TABLE [test] ([i] INT)")!=SQLITE_DONE)
{Print(sql3.ErrorMsg()); DebugBreak(); return;}
elsePrint("TABLE CREATED.");
//--- INSERT VALUEif(sql3.Query("INSERT INTO [test] VALUES(1)")!=SQLITE_DONE)
{Print(sql3.ErrorMsg()); DebugBreak(); return;}
elsePrint("VALUE \"1\" INSERTED.");
//--- COUNT TABLE ROWSif(sql3.Query(testTable,"SELECT COUNT(*) FROM [test]")!=SQLITE_DONE)
{Print(sql3.ErrorMsg()); DebugBreak(); return;}
testTable.Cell(0,0,testCell);
Print("RETRIEVED DATA FROM TABLE : Count(*)=",testCell.GetInt());
}
//+------------------------------------------------------------------+
+добавил Printов и тестовый __int d0 внутри int ViewInt() для сравнения
Print(__FUNCSIG__," || ENTER FUNCTION");
//--- TEST d0
__int d0={0}; Print ("TEST d0: d0.v=",d0.v, " DATA d.b:"); ArrayPrint(d0.b);
ViewArray(d0.b,0,4);
Print("ViewArray OUTPUT: d0.v=",d0.v," DATA d.b:"); ArrayPrint(d0.b);
//--- d - AS WAS+some Prints
__int d; d.v=0;Print("\n","d AS WAS: d.v=",d.v," DATA d.b:"); ArrayPrint(d.b);
ViewArray(d.b,0,4);
Print("ViewArray OUTPUT: d.v=",d.v, " DATA d.b:"); ArrayPrint (d.b);
//---return(d.v);
OUTPUT:
//CONNECTED TO DB.//TABLE CREATED.//VALUE "1" INSERTED.//int CSQLite3Cell::GetInt() || ENTER FUNCTION//int CSQLite3Cell::GetInt() || type=CT_INT case//int CByteImg::ViewInt() || ENTER FUNCTION//TEST d0: d0.v=0 DATA d.b://0 0 0 0//ViewArray OUTPUT: d0.v=1 DATA d.b://1 0 0 0// //d AS WAS: d.v=0 DATA d.b://0 0 0 0//ViewArray OUTPUT: d.v=0 DATA d.b://1 0 0 0//RETRIEVED DATA FROM TABLE : Count(*)=0
Я прочитал Ваш, @o_o код, прежде чем писать предыдущие посты и прекрасно видел что там union - потому мне тоже этот баг показался странным, но он очевидно есть.
Правда в "lib'е" (далее по коду - во ViewArray и конструкторах__int)я ошибки так и не нашел. Однако из выделенного в OUTPUT (очевидно странного для union) могу предположить, что "добрый" компилятор не увидел изменения в __int после ViewArray (который оперирует только .b), и вернул из кэша последнее известное значение для .v = 0 (выделено) "неглядя" в сам d.v.
Но здесь у меня только предположения, потому как самого комплиятора я в глаза не видел, а в Вашем коде, повторюсь, я связанных с этим багом ошибок не нашел.
rvkstudent: При запуске скрипта получаю 2 предупреждения:
2017.09.26 07:39:35.569SQLite3Test'C:\Users\Roman\AppData\Roaming\MetaQuotes\Terminal\MQL5\Libraries\sqlite3_32.dll' is not 64-bit version 2017.09.26 07:39:35.602SQLite3Test (GAZP,H1)Cannot load 'C:\Users\Roman\AppData\Roaming\MetaQuotes\Terminal\MQL5\Libraries\sqlite3_32.dll' [193]
В архиве были обе библиотеки 32 и 64. У меня ОС Win7 64. Не понимаю - что требуется сделать?
ничего
это реакция МТ на импорт, но код продолжает работать.
Я понял, что от Вас сложно добиться помощи по делу. Буду разбираться сам. Просто имейте в виду, что Ваш пример работает не везде. Почему - пока не знаю.
Тестовый скрипт:
+добавил Printов и тестовый __int d0 внутри int ViewInt() для сравнения
OUTPUT:
Я прочитал Ваш, @o_o код, прежде чем писать предыдущие посты и прекрасно видел что там union - потому мне тоже этот баг показался странным, но он очевидно есть.
Правда в "lib'е" (далее по коду - во ViewArray и конструкторах __int) я ошибки так и не нашел. Однако из выделенного в OUTPUT (очевидно странного для union) могу предположить, что "добрый" компилятор не увидел изменения в __int после ViewArray (который оперирует только .b), и вернул из кэша последнее известное значение для .v = 0 (выделено) "неглядя" в сам d.v.
Но здесь у меня только предположения, потому как самого комплиятора я в глаза не видел, а в Вашем коде, повторюсь, я связанных с этим багом ошибок не нашел.
Опубликована новая статья SQL и MQL5: Работа с базой данных SQLite:
Автор: o_O
Привет, отличная статья.
Добрый день,
При запуске скрипта получаю 2 предупреждения:
2017.09.26 07:39:35.569 SQLite3Test 'C:\Users\Roman\AppData\Roaming\MetaQuotes\Terminal\MQL5\Libraries\sqlite3_32.dll' is not 64-bit version
В архиве были обе библиотеки 32 и 64. У меня ОС Win7 64. Не понимаю - что требуется сделать?
При запуске скрипта получаю 2 предупреждения:
2017.09.26 07:39:35.569 SQLite3Test 'C:\Users\Roman\AppData\Roaming\MetaQuotes\Terminal\MQL5\Libraries\sqlite3_32.dll' is not 64-bit version
2017.09.26 07:39:35.602 SQLite3Test (GAZP,H1) Cannot load 'C:\Users\Roman\AppData\Roaming\MetaQuotes\Terminal\MQL5\Libraries\sqlite3_32.dll' [193]
В архиве были обе библиотеки 32 и 64. У меня ОС Win7 64. Не понимаю - что требуется сделать?
ничего
это реакция МТ на импорт, но код продолжает работать.
В приложении исправление по функции PrintTable
Новая статья SQL и MQL5: Работа с базой данных SQLite опубликована:
Автор: o_O
Есть ли у вас 32 битная версия?
Дело в том, что у меня много 32-битных клиентов...
Здравствуйте.
При запуске SQLite3Test.mq5 получаю ошибку 14 (SQLITE_CANTOPEN). Что я не так делаю?
Здравствуйте.
При запуске SQLite3Test.mq5 получаю ошибку 14 (SQLITE_CANTOPEN).
Что я не так делаю?
не дебажете или не принтуете в лог место ошибки
не дебажете или не принтуете в лог место ошибки
1. Запускаю скрипт из архива, "как есть".
2. Дебаг "На реальных данных". Захожу в первую функцию:
3. Дохожу до этого места в файле SQLite3Base.mqh:
4. После выполнения строки
int res=::sqlite3_open(file,m_db);получаю res равным 14. На этом работа скрипта заканчивается.
Хотя, судя пот тексту статьи, должно быть
"В результате работы появится файл базы данных в папке установки терминала MetaTrader 5."Что может быть причиной? В какую сторону смотреть?
Проверил скачанный скрипт
всё отработало с первого раза правильно
Serhii Shevchuk:
В какую сторону смотреть?
начните отсюда
Проверил скачанный скрипт
Я тоже проверил:
Всё так же ошибка 14.
Я понял, что от Вас сложно добиться помощи по делу. Буду разбираться сам. Просто имейте в виду, что Ваш пример работает не везде. Почему - пока не знаю.