Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
как в MQL4 прочитать результат функции mysql_fetch_row ?
У меня в данный момент идет разработка скрипта по для работы с базой данный MySQL чтение, вставка, удаление и модификация.
Скрипт объёмный, но суть работы с базой данных будет понятна думаю из одной функции.
Правда в данном примере возвращается ID записи из таблицы, но переделать проблем не составит, помнится я и текст и цифры возвращал из базы, все работало.
провёл небольшой следственный эксперимент
создал таблицу с двумя полями
INT id; TEXT user
в таблице две строки
id user
1 aaa
2 bbb
1. При запросе "SELECT id FROM table" функция fetch_row возвращает (адрес)(адрес) 1 (адрес)(адрес) 2
2. При запросе "SELECT user FROM table" функция fetch_row возвращает (адрес)(адрес) aaa (адрес)(адрес) bbb
вобщем то с этим можно работать, жаль только что возврат идёт в string
3. Если запросить два поля "SELECT id, user FROM table" то функция возвращает (адрес)(адрес)(адрес) 1 (адрес)(адрес)(адрес) 2
4. Если поменять местами поля "SELECT user, id FROM table" то функция возвращает (адрес)(адрес)(адрес) aaa (адрес)(адрес)(адрес) bbb
получается, что явно видно только одно первое поле из строки и добавился еще один 4-байтовый адрес.
провёл небольшой следственный эксперимент
создал таблицу с двумя полями
INT id; TEXT user
в таблице две строки
id user
1 aaa
2 bbb
1. При запросе "SELECT id FROM table" функция fetch_row возвращает (адрес)(адрес) 1 (адрес)(адрес) 2
2. При запросе "SELECT user FROM table" функция fetch_row возвращает (адрес)(адрес) aaa (адрес)(адрес) bbb
вобщем то с этим можно работать, жаль только что возврат идёт в string
3. Если запросить два поля "SELECT id, user FROM table" то функция возвращает (адрес)(адрес)(адрес) 1 (адрес)(адрес)(адрес) 2
4. Если поменять местами поля "SELECT user, id FROM table" то функция возвращает (адрес)(адрес)(адрес) aaa (адрес)(адрес)(адрес) bbb
получается, что явно видно только одно первое поле из строки и добавился еще один 4-байтовый адрес.
Как же это потом забирать в программу?
Я ведь собираюсь в основном записывать числа с плавающей точкой и читать их.
У меня в данный момент идет разработка скрипта по для работы с базой данный MySQL чтение, вставка, удаление и модификация.
Скрипт объёмный, но суть работы с базой данных будет понятна думаю из одной функции.
Правда в данном примере возвращается ID записи из таблицы, но переделать проблем не составит, помнится я и текст и цифры возвращал из базы, все работало.
Это интересный пример, но из него не видно как читать числовые данные.
В принципе, я всего для двух действий хочу использовать базу с таблицей из трёх колонок:
1) Прочитать первые две колонки (индекс и первую числовую колонку)
Затем, выбрав, самое подходящее число из числовой колонки внутри программы MQ4
2) Прочитать по индексу этого числа число из второй колонки.
Какие функции для этого мне следует использовать? И нормально ли они работают в указаной DLL?
Это интересный пример, но из него не видно как читать числовые данные.
вы хоть одну строку кода написали, чтоб увидеть что и как возвращается ?
HIDDEN уже привел полное решение для чтения одного поля из базы. вы его запустили ?
Если поможете написать конвертер анси в юникод для МКЛ5, код которого приведен в предыдущем посте. Отправлю Вам рабочий код для МКЛ4, так же это поможет при написании класса для МКЛ5.
В MQL5 есть функции для конвертации юникода. Посмотрите /ru/docs/convert/chararraytostring и /ru/docs/convert/stringtochararray
В импорте функций объявляйте не строки, а массивы типа uchar
В импорте функций объявляйте не строки, а массивы типа uchar
проблема к сожалению в том, что эти строки возвращаются как результат функции, а не в один из её & параметров.
mysql_fetch_row возвращает указатель на массив строк - char**
--------
может кто знает - есть ли какие-то низкоуровневые функции из kernel, которые могут выдать из массива char** - строку char* ?
(типа strcpy, strcat...)
и аналогично из массива int* - какая-то либная функция для получения его конкретного элемента ?
пусть даже сама функция и не предназначена напрямую на эту операцию :)
Полная реализация кода....
SQL дамп базы
Результат работы