Я пытался создать базу данных 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
где я делаю не так ??
Спасибо!
Я думаю, что вы ошиблись: результат numRowsAffected()
говорит вам, сколько строк было изменено по запросу. Ваш запрос ничего не меняет, поэтому результат должен быть 0
или не определено. Таким образом, вы не должны ожидать, что первый вывод будет risultato riga: 1
, Использовать size()
вместо этого, чтобы узнать, сколько строк соответствует вашему SELECT
запрос.
Вторая проблема заключается в том, что вы передаете QString
Возражать printf()
, который ожидает указатель на массив с нулевым символом в конце char
значения вместо (когда вы используете %s
спецификатор формата). Вам нужно конвертировать QString
объект в указатель на массив символов C.
Других решений пока нет …