Russian Qt Forum

Qt => Базы данных => Тема начата: bayah от Июнь 07, 2010, 15:08



Название: Проблема с запросом SELECT...
Отправлено: bayah от Июнь 07, 2010, 15:08
Возможно я сошел с ума, но...

Есть таблица.

Код:
    QSqlQuery query;
    query.exec("CREATE TABLE DIST ("
               "CODE_D INTEGER PRIMARY KEY NOT NULL, "
               "NAME_D VARCHAR(20) UNIQUE NOT NULL"
               ");");

Таблица, к примеру, заполнена значениями:
CODE_D       NAME_D

1                alpha
2                beta
3                gama

Дальше я делаю запрос:

Код:
        QString id = "1";
        QSqlQuery query;
        query.exec("SELECT NAME_D FROM DIST WHERE CODE_D = "+id+";");
        query.next();
        QString a = query.value(0).toString();

Если же пытаюсь сделать наоборот - по имени получить код, ничего не выходит:

Код:
        QString name = "beta";
        QSqlQuery query;
        query.exec("SELECT CODE_D FROM DIST WHERE NAME_D = "+name+";");
        query.next();
        QString a = query.value(0).toString();

query.next() возвращает false. Я что-то не понимаю видимо?


Название: Re: Проблема с запросом SELECT...
Отправлено: crossly от Июнь 07, 2010, 15:14
во первых ; в конце не нужно.... во вторых
Код:
query.exec("SELECT CODE_D FROM DIST WHERE NAME_D = '"+name+"'");
т.е. в СУБД должно быть передано
Код:
SELECT CODE_D FROM DIST WHERE NAME_D = 'beta' 
а не
Код:
SELECT CODE_D FROM DIST WHERE NAME_D = beta 


Название: Re: Проблема с запросом SELECT...
Отправлено: Kolobok от Июнь 07, 2010, 15:36
Посмотри описание класса QSqlQuery. Там много полезных методов.


Название: Re: Проблема с запросом SELECT...
Отправлено: bayah от Июнь 07, 2010, 15:56
crossly , спасибо.
Точно, так и надо было...
Код:
SELECT CODE_D FROM DIST WHERE NAME_D = 'beta' 


Название: Re: Проблема с запросом SELECT...
Отправлено: crossly от Июнь 07, 2010, 16:05
ну что могу сказать... с++ не все... sql тоже учить надо... :)