QSqlQuery не отвечает правильно

Я пытался создать базу данных SQLite с Qt, и я сделал !! Я назвал мой дбprova_db«и содержит следующую таблицу:

marker_db

id     site (columns)
0      www.google.it
1      www.youtube.it
2      www.facebook.it

Затем я попытался запросить мой prova_db. Вот код:

int main () {
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("prova_db");
if (!db.open()) { printf("DB doesn't exist\n");}
else  {
QSqlQuery query1;
query1.exec( "SELECT site FROM marker_db WHERE id = 1");

int i = query1.numRowsAffected();
printf("result row: %d\n", i);
while(query1.next()){
QString str = query1.value(0).toString();
printf("result: %s\n", str);
}
}
db.close();
return 0;
}

Результат:

result row : 0
result : (strange char)

вместо этого результат должен быть:

result row: 1
result : www.youtube.it

где я делаю не так ??

Спасибо!

0

Решение

Я думаю, что вы ошиблись: результат numRowsAffected() говорит вам, сколько строк было изменено по запросу. Ваш запрос ничего не меняет, поэтому результат должен быть 0 или не определено. Таким образом, вы не должны ожидать, что первый вывод будет risultato riga: 1, Использовать size() вместо этого, чтобы узнать, сколько строк соответствует вашему SELECT запрос.

Вторая проблема заключается в том, что вы передаете QString Возражать printf(), который ожидает указатель на массив с нулевым символом в конце char значения вместо (когда вы используете %s спецификатор формата). Вам нужно конвертировать QString объект в указатель на массив символов C.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]