实现效果:
完整演示代码:
#include <QCoreApplication>
#include <QtSql/QSqlDatabase>
#include <QSqlError>
#include <QDebug>
#include <QSqlQuery>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//指定要使用的数据库是SQLITE
QSqlDatabase sql = QSqlDatabase::addDatabase("QSQLITE");
sql.setDatabaseName("sqlite.db");//创建数据库文件
//打开数据库
if(!sql.open()){
qDebug()<<QStringLiteral("打开数据库失败:%1").arg(sql.lastError().text());
}else{
qDebug()<<QStringLiteral("打开数据库成功!");
//执行SQL创建表
QString tSql = "create table a("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"name VARCHAR(40) NOT NULL,"
"score INTEGER NOT NULL,"
"class VARCHAR(40) NOT NULL)";
QSqlQuery q;
q.exec(tSql);//执行查询
//插入数据
//单条记录插入
QString iSql="INSERT INTO a(name,score,class)"
"VALUES('HACKERX',88,'CLASS ONE')";
q.exec(iSql);
//批量插入
QStringList names;
for(int i=0;i<100;i++){
names<<QString("Name%1").arg(i+1);
}
QStringList classes;
for(int i=0;i<100;i++){
classes<<QString("Class%1").arg(i+1);
}
qDebug()<<names<<classes;
//指定列绑定字段
q.prepare("INSERT INTO a(name,score,class) VALUES(:name,:score,:class)");
for(QString n:names){
q.bindValue(":name",n);//绑定name字段
q.bindValue(":score",(qrand()%101));//绑定score字段
q.bindValue(":class",classes[qrand()%classes.length()]);//绑定class字段
q.exec();//通过bindValue方式不用传入sql语句
}
}
return a.exec();
}
增加sqlite的增,删,改,查
#include <QCoreApplication>
#include <QtSql/QSqlDatabase>
#include <QSqlError>
#include <QDebug>
#include <QSqlQuery>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//指定要使用的数据库是SQLITE
QSqlDatabase sql = QSqlDatabase::addDatabase("QSQLITE");
sql.setDatabaseName("sqlite.db");//创建数据库文件
//打开数据库
if(!sql.open()){
qDebug()<<QStringLiteral("打开数据库失败:%1").arg(sql.lastError().text());
}else{
qDebug()<<QStringLiteral("打开数据库成功!");
//执行SQL创建表
QString tSql = "create table a("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"name VARCHAR(40) NOT NULL,"
"score INTEGER NOT NULL,"
"class VARCHAR(40) NOT NULL)";
QSqlQuery q;
q.exec(tSql);//执行查询
//插入数据
//单条记录插入
QString iSql="INSERT INTO a(name,score,class)"
"VALUES('HACKERX',88,'CLASS ONE')";
q.exec(iSql);
//批量插入
QStringList names;
for(int i=0;i<100;i++){
names<<QString("Name%1").arg(i+1);
}
QStringList classes;
for(int i=0;i<100;i++){
classes<<QString("Class%1").arg(i+1);
}
qDebug()<<names<<classes;
//指定列绑定字段
q.prepare("INSERT INTO a(name,score,class) VALUES(:name,:score,:class)");
for(QString n:names){
q.bindValue(":name",n);//绑定name字段
q.bindValue(":score",(qrand()%101));//绑定score字段
q.bindValue(":class",classes[qrand()%classes.length()]);//绑定class字段
q.exec();//通过bindValue方式不用传入sql语句
}
//查询带条件
q.exec("select * from a where score > 85 and class GLOB '*5'");
while (q.next()) {
qDebug()<<QString("%1 %2 %3 %4 ")
.arg(q.value(0).toString())
.arg(q.value(1).toString())
.arg(q.value(2).toString())
.arg(q.value(3).toString());
}
//为表增加字段
q.exec("alter table a add column field1 varchar(16)");
//更新field字段值
q.exec("update a set field1='hello'");
//删除指定行
q.exec("delete from a where id>30");
}
return a.exec();
}