Проблемы с QT и МИСКЛ Ремото

У меня есть мой код функционируя в C ++ и Qt 5.13.1 Mingw32 Мой код присоединяется в Sqlite3 и удаленная база данных (совсем внутри той же сети) С sqlite3 нет проблемы и до определенной степени с MySQL также, проблема приходит, когда я пробую регистрировать данные внутри удаленной таблицы (один за другим), от случая к случаю не регистрирует всех данных, иногда, если, иногда меньше. редкая проблема. Ajunto код, который дает мне проблемы:

local->prepare("SELECT * FROM ProductosVendidos");
local->exec();
if( local->first() ){
    do{
        query->clear();
        query->prepare( "INSERT INTO ProductosVendidosR(Folio, Producto, Codigo, Cantidad, PrecioUnitario, Total, PrecioCompra, Terminal) "
"VALUES(:Folio, :Producto, :Codigo, :Cantidad, :PrecioUnitario, :Total, :PrecioCompra, :Terminal)" );
        query->bindValue( ":Folio", local->value(0).toString() );
        query->bindValue( ":Producto", local->value(1).toString() );
        query->bindValue( ":Codigo", local->value(2).toString() );
        query->bindValue( ":Cantidad", local->value(4).toString() );
        query->bindValue( ":PrecioUnitario", ceros( local->value(3).toString() ) );
        query->bindValue( ":Total", ceros( local->value(5).toString() ) );
        query->bindValue( ":PrecioCompra", ceros( local->value(6).toString() ) );
        query->bindValue( ":Terminal", myName );
        query->exec();
    }while( local->next() );
}

Где помещение соединено в нее sqlite3 и query в удаленного MySQL. Проблемы связи я не думаю, так как, присоединяет ли он, проблема приходит, захотев зарегистрировать, aveces регистрирует 3 иногда 10 иногда 7 всегда в случайном способе и редко 10 реестров, которые у меня есть (даже сейчас, из-за которого всегда они будут больше). Все это эта внутри трэда, который функционирует хорошо, и на втором плане чтобы не соединять приложение.

0
задан 05.11.2019, 02:18
1 ответ

query->exec() возвращает тебе booleano, который позволяет тебе знать, работало ли решение SQL правильно.

Вместо того, чтобы игнорировать результат, deberГ-туз обслуживать это и, в случае когда оно находить проблему, показывать ошибку и(или) действовать последовательно:

if( !query->exec() )
{
  QSqlError error = query->lastError();
  qDebug() << error.text();
}
0
ответ дан 01.12.2019, 12:46
  • 1
    Если, habí в подумавший об этом; но представь консультировать это более 100 раз из-за цикла. Encontré форма, что не, если это была правильная: db.setConnectOptions (" MYSQL_OPT_RECONNECT=1"); Это в configuració n с conexió n в mysql, кажется, реши проблему, так как ошибка состояла в том, что он был разъединен базы данных какой-то extrañ в razó n. – George Camelos 05.11.2019, 18:04
  • 2
    @GeorgeCamelos консультировать booleano вслед за консультацией SQL - бесплатно, тяжелое состоит в том, чтобы выполнять SQL и, взамен, ты позволяешь, что твой có я говорю, что я мониторировал возможные ошибки. Консультация SQL смоги не удаваться в пользу тысячи мотивов..., если ты не знаешь qué он произошел осложнено разрабатывать ответ – eferion 05.11.2019, 18:21
  • 3
    Despué s пробования с setConnectOptions (" MYSQL_OPT_RECONNECT=1") продолжи не удаваться и использовать lastError () он бросает меня: QSqlError (" 2013" " QMYSQL3: Unable to execute statement" " Lost connection to MySQL server during query"), что, поскольку я понимаю, остается perdié ndose conexió n с базой данных. – George Camelos 06.11.2019, 22:37