Russian Qt Forum

Qt => Вопросы новичков => Тема начата: psk07 от Октябрь 11, 2019, 15:07



Название: [РЕШЕНО] QSqlQuery & SELECT EXISTS
Отправлено: psk07 от Октябрь 11, 2019, 15:07
Всем привет. Помогите пожалуйста найти ошибку в SELECT EXIST. Не могу пройти проверку value.

QSqlQuery query;

QString strF = QString("SELECT EXISTS (SELECT " DEVICE_ORIG " FROM " DEVICE " WHERE ( " DEVICE_ORIG " = '%1' ) AND id NOT LIKE '%2' )");
QString str = strF.arg(ui.lineEdit->text(), model->data(model->index(mapper->currentIndex(), 0), Qt::DisplayRole).toString());

query.prepare(str);
query.exec();
query.next();

// Если запись существует, то диалог вызывает предупредительное сообщение
if (query.value(0) != 0)
{
    QMessageBox::information(this, trUtf8("Error"), trUtf8("Such a log or comment already exists"));
}


Название: Re: QSqlQuery & SELECT EXISTS
Отправлено: vbv от Октябрь 11, 2019, 17:33
query.value(0).toInt()!=0
А лучше
if(query.value(0).toBool()){...}

Или вообще без exist;
if(query.next()){
// запись существует.
}


Название: Re: QSqlQuery & SELECT EXISTS
Отправлено: vbv от Октябрь 11, 2019, 17:42
Всем привет. Помогите пожалуйста найти ошибку в SELECT EXIST. Не могу пройти проверку value.

QSqlQuery query;

QString strF = QString("SELECT EXISTS (SELECT " DEVICE_ORIG " FROM " DEVICE " WHERE ( " DEVICE_ORIG " = '%1' ) AND id NOT LIKE '%2' )");
QString str = strF.arg(ui.lineEdit->text(), model->data(model->index(mapper->currentIndex(), 0), Qt::DisplayRole).toString());

query.prepare(str);
query.exec();
query.next();

// Если запись существует, то диалог вызывает предупредительное сообщение
if (query.value(0) != 0)
{
    QMessageBox::information(this, trUtf8("Error"), trUtf8("Such a log or comment already exists"));
}


И еще
query.prepare("SELECT EXISTS (SELECT " DEVICE_ORIG " FROM " DEVICE " WHERE ( " DEVICE_ORIG " = :device_orig) AND id NOT LIKE :id; )"); 
query.bindValue(":device_orig", ui.lineEdit->text());
query.bindValue(":id", model->data(model->index(mapper->currentIndex(), 0), Qt::DisplayRole).toString());
query.exec();
.....

// скобочки не считал, мог немного напутать с их соответствием.


Название: Re: QSqlQuery & SELECT EXISTS
Отправлено: psk07 от Октябрь 14, 2019, 14:01
query.value(0).toInt()!=0
А лучше
if(query.value(0).toBool()){...}

Или вообще без exist;
if(query.next()){
// запись существует.
}

Спасибо большое toBool()) очень выручил.