Shmuma / sqlite3-mt4-wrapper

Wrapper DLL for sqlite3 usage from MT4
http://www.shmuma.ru/mt4-sqlite.html
45 stars 29 forks source link

UPDATE some row during SELECT #1

Closed dmytro-verbivskyi closed 12 years ago

dmytro-verbivskyi commented 12 years ago

Добрый день, и на том огромное спасибо, за труд!!! Подскажите сталкивались ли вы с подобной ситуацией, когда в процессе цикла по СЕЛЕКТУ нужно сделать АПДЕЙТЫ? Сервер возвращает типа код 5: Server is Busy

int cols[3]; string selectPositions = StringConcatenate( "SELECT * FROM trades ", "WHERE status = 1;"); // only ACTIVE

int handle = sqlite_query(db, selectPositions, cols);

while ( sqlite_next_row(handle) == 1 ) { _ int dbID = StrToInteger(sqlite_getcol(handle, 0)); int dbTicket = StrToInteger(sqlite_get_col(handle, 2)); _ double dbOP = StrToDouble (sqlite_getcol(handle, 3)); string updateQuery = "";

___ if ( OrderSelect(dbTicket, SELECT_BY_POS, MODE_TRADES) ) {

} else { // then it might be closed ____ Print("it\'s been closed"); ____ updateQuery = StringConcatenate("UPDATE trades SET status = 2 WHERE id = ", dbID, ";"); } ___ sqlExec(db, updateQuery); } sqlite_free_query(handle);

dmytro-verbivskyi commented 12 years ago

Блин, извините, но пришлось хоть так пример исходника выложить.

Shmuma commented 12 years ago

Добрый день!

Для примеров исходников на гитхабе есть Gist (https://gist.github.com/), очень удобно.

С такой ситуацией не сталкивался, но судя по коду sqlite, выход только один - в цикле сохранять обновляющие запросы в массиве, которые потом выполнять вне цикла select.

dmytro-verbivskyi commented 12 years ago

Спасибо за совет, реализовал этот workaround. Работает приемлемо. https://gist.github.com/1755439#file_gistfile1.cpp

блин, все равно не выходит вставить исходник прямо сюда в коммент.