2015-10-18 3 views
0

Я получаю синтаксические ошибки sql для моей команды обновления в qt creator.Ошибка синтаксиса обновления Qt Creator Sql

QSqlQuery q,q2; 

for(int r=0; r<rowtablecount; r++){ 
    q.prepare("update checkdata set " 
       "alobs=:alobs," 
       "payee_name=:payee_name," 
       "payee_nature=:payee_nature," 
       "account_code=:account_code," 
       "amount=:amount," 
       "date_paid=:date_paid," 
       "cancel_status=:cancel_status," 
       "reviewer=:reviewer," 
       "preparer=:preparer," 
       "reciever=:reciever," 
       "reviewer_pos=:reviewer_pos," 
       "preparer_pos=:preparer_pos," 
       "reciever_pos=:reciever_pos," 
       "date_delivered=:date_delivered" 
       "where check_no = :checkno"); 
    q.bindValue(":checkno", tabledata[r][2]); 
    qDebug() << tabledata[r][2]; 
    q.bindValue(":alobs",tabledata[r][3]); 
    q.bindValue(":payee_name",tabledata[r][4]); 
    q.bindValue(":payee_nature",tabledata[r][5]); 
    q.bindValue(":account_code",tabledata[r][6]); 
    q.bindValue(":amount",tabledata[r][7].toDouble()); 
    q.bindValue(":date_paid",tabledata[r][10]); 
    q.bindValue(":reviewer",reviewer); 
    q.bindValue(":preparer",preparer); 
    q.bindValue(":reciever",reciever); 
    q.bindValue(":reviewer_pos",reviewer_pos); 
    q.bindValue(":preparer_pos",preparer_pos); 
    q.bindValue(":reciever_pos",reciever_pos); 
    q.bindValue(":date_delivered",tabledata[r][9]); 
    q.bindValue(":acicn", acic_value); 

    q2.prepare("update acic set date_prepared=:date_prepared, total_amount=:total_amount where acic_num=:acic_num"); 
    q2.bindValue(":date_prepared",tabledata[r][1]); 
    q2.bindValue(":total_amount",tabledata[r][8]); 
    q2.bindValue(":acic_num", acic_value); 

    if(!q.exec()){ 
     if(q.lastError().isValid()) 
      qDebug() << q.lastError().text() << " <error " << r; 
     QMessageBox::critical(this,tr("Error: Entry Failed"),tr("Data Field incorrect.")); 
    if(!q2.exec()){ 
     if(q2.lastError().isValid()) 
      qDebug() << q2.lastError().text() << " <error " << r; 
     QMessageBox::critical(this,tr("Error: Entry Failed"),tr("Data Field incorrect.")); 

Из сказанного выше, я получаю эту ошибку, повторяется 3 раза из-за цикл:

«У Вас есть ошибка в вашем синтаксисе SQL, проверьте руководство, которое соответствует Вашей версии сервера MySQL для правильный синтаксис для использования рядом с 'check_no =' 1248973 '' в строке 1 QMYSQL: невозможно выполнить запрос « Я подозреваю, что это либо написание команды при подготовке, либо, возможно, зарезервированное слово, но я не могу ее найти.

Идеи на этом были бы наиболее полезными.

+1

Дайте некоторое пространство перед тем, где предложение '' где check_no =: checkno "' –

+0

Боже, знай, что я чувствую себя идиотом. Вы совершенно правы. Спасибо, никто из нас не видел этого. – excogitare

ответ

0

Кажется, я полный идиот, потому что не видел этого. Ошибка находится в строке до «where check_no =: check_no». Ему просто нужно пространство.

Благодаря Abhik Chakraborty за указание на это.

Смежные вопросы