数据库的使用主要是创建数据库,创建数据库表,输入数据库数据,查看数据库数据,导出数据库数据。
首先最重要的是*.pro文件中添加 QT += sql。在接下来使用什么函数,请自行添加相应的类。
(1)创建数据库连接
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydb.db");//双引号中改成:memory:即保存在运存中,程序关闭,即删除
if (!db.open())
qDebug()<<" can't open database >>>>>> mydb.db";
使用第三方数据库Sqlite,数据库名字为mydb.db,并且打开。
建议创建放在main.cpp函数中,保持程序的干净,也可以另建头文件,专类管理。
(2)创建数据库表
QSqlQuery query;
query.exec("create table test (id int primary key, name varchar(20))");//primary key 为主键
第一句可以放到其他类的*.h头文件中,这样这个类*.cpp就都可以引用了。
第二句也可以动态建表,利用QString的.arg()的方法。
QString a="xx";
QString b="1";
QString c=QString("create table %1 (id int,name varchar,%2 int)").arg(a).arg(b);
query.exec(c);
(3)输入数据库数据
单个输入
QSqlQuery query;
query.prepare("insert into test (id, name) VALUES (:id, :name)"); //准备执行SQL查询
query.bindValue(":id", 12); //在这定占位符上确定绑定的值
query.bindValue(":name"," xx");
query.exec();
批量输入
QSqlQuery query;
query.prepare("insert into test values (?, ?)");
QVariantList ints;
ints << 10 << 11 << 12 << 13;
query.addBindValue(ints);
QVariantList names;
//最后一个是空字符串,应与前面的格式相同
names << "xiaoming" << "xiaoliang"
<< "xiaogang" << QVariant(QVariant::String);
query.addBindValue(names);
QSqlQuery query;
QString a="11";
QString b="xx";
QString c=QString("insert into test values(%1, %2)").arg(a).arg(b);
query.exec(c);
(4)查看数据库数据
一般查询:
比较常用的SQL语句QSqlQuery query;
query.exec("select * from test");//*既是全部
query.exec("select name from test where id =11")
query.exec("select * from test where id between 1 and 2 ");//还有in(1,2,3)