在Qt的sql中自带了sqlite3以及之前版本的sqlite,默认是sqlite3了。
首先随意建一个Qt程序,在.pro文件中加入sql模块:
执行qmake
接下来就可以使用sqlite了,看代码示例:
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlDriver>
#include <QSqlQuery>
#include <QDateTime>
#include <QSqlError>
#include <QSqlRecord>
#include <QSqlResult>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString error_tip = "%1:[%2]%3";
QString create_sql = "CREATE TABLE IF NOT EXISTS data_list(id INT PRIMARY KEY, name VARCHAR(255), date VARCHAR(255));";
QString insert_sql = "INSERT INTO data_list(id, name, date) VALUES(%1,'%2','%3');";
QString select_sql = "SELECT * FROM data_list;";
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("./data_station.db");
if(!db.open())
{
qDebug() << error_tip.arg("open data base 'data_station' failed").arg(db.lastError().type()).arg(db.lastError().text());
return 0;
}
QSqlQuery db_operator(db);
//* 如果不存在表格则创建
if(!db_operator.exec(create_sql))
{
qDebug() << error_tip.arg("create table 'data_list' failed").arg(db_operator.lastError().type()).arg(db_operator.lastError().text());
}
//* 插入100条示例数据
for(int i = 0; i < 100; i++)
{
if(!db_operator.exec(insert_sql.arg(i).arg(QString("data %1").arg(i)).arg(QDateTime::currentDateTime().toString())))
{
qDebug() << error_tip.arg("insert failed").arg(db_operator.lastError().type()).arg(db_operator.lastError().text());
}
}
db.commit();
//* 查询所有数据
if(!db_operator.exec(select_sql))
{
qDebug() << error_tip.arg("select failed").arg(db_operator.lastError().type()).arg(db_operator.lastError().text());
}
else
{
qDebug() << select_sql;
int count = 0;
while(db_operator.next())
{
count ++;
QString res = "%1 '%2' %3";
qDebug() << res.arg(db_operator.value(0).toString()).arg(db_operator.value(1).toString()).arg(db_operator.value(2).toString());
}
qDebug() << QString("[count:%1]").arg(count);
}
//return 0;
return a.exec();
}
第一次运行的时候会在运行目录自动创建数据库文件:data_station.db 并创建表格data_list并尝试插入100行数据。
运行结果: