下面是一个简单的示例,用于在Qt中使用C++实现SQLite数据库多字段查询:
- 首先,需要包含SQLite头文件和Qt SQL库头文件:
#include <sqlite3.h>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
- 创建SQLite数据库连接并打开数据库:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydatabase.db");
if (!db.open()) {
qDebug() << "Failed to open database.";
return;
}
- 创建查询语句并执行:
QString queryStr = "SELECT * FROM mytable WHERE name=? AND age=?";
QSqlQuery query(db);
query.prepare(queryStr);
query.bindValue(0, "John");
query.bindValue(1, 25);
if (!query.exec()) {
qDebug() << "Failed to execute query.";
return;
}
- 处理查询结果:
while (query.next()) {
QString name = query.value(0).toString();
int age = query.value(1).toInt();
qDebug() << "Name:" << name << "Age:" << age;
}
完整的示例代码如下:
#include <sqlite3.h>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
int main(int argc, char *argv[]) {
// Create SQLite database connection
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydatabase.db");
if (!db.open()) {
qDebug() << "Failed to open database.";
return 1;
}
// Create query and execute
QString queryStr = "SELECT * FROM mytable WHERE name=? AND age=?";
QSqlQuery query(db);
query.prepare(queryStr);
query.bindValue(0, "John");
query.bindValue(1, 25);
if (!query.exec()) {
qDebug() << "Failed to execute query.";
return 1;
}
// Process query result
while (query.next()) {
QString name = query.value(0).toString();
int age = query.value(1).toInt();
qDebug() << "Name:" << name << "Age:" << age;
}
// Close database connection
db.close();
return 0;
}