https://mp.weixin.qq.com/s/t4ia_h4NOHwYnBZAElkvQg
在编写程序的过程中,有一些数据希望软件再次运行时可以记录上一次用户的一些操作,比如服务器的ip和端口号等。对于数据量比较小的,在Qt中可以使用QSetting来记录。但对于一些数据量比较大的,肯定不能使用QSetting了。此时一般会选择使用数据库来记录。 这里简单介绍下SQLite。SQLite是一款轻型的文件型数据库。主要应用于嵌入式领域,支持跨平台。另外SQLite 是非常小的,是轻量级的,完全配置时小于400KiB,省略可选功能配置时小于250KiB。 程序平台:ubuntu、qt5
本次主要验证创建数据库、创建表、插入数据、修改数据、删除数据、查找数据等功能。
1. 创建数据库文件设置名称 void Widget:n_pbn_createdataBase_clicked(){ QDir currentDir = QDir::current(); qDebug() << currentDir.absolutePath(); //指定该连接使用的数据库驱动,没有设置第二个参数即为默认连接 m_db = QSqlDatabase::addDatabase("QSQLITE"); //创建一个有名字的连接 // QSqlDatabase db1=QSqlDatabase::addDatabase("QSQLITE","dapi"); //设置数据库名。若没有数据库则会创建数据库.(即build****-Debug下没有*.db的 数据库文件,则会创建) m_db.setDatabaseName("mydatabase.db");// //设置主机名// db.setHostName("compute");// //设置用户名和密码// db.setUserName("dapi");// db.setPassword("1");}
2. 创建表插入数据 void Widget:n_pbn_insertdata_clicked(){ //打开数据库 if(m_db.open()==true) { qDebug("insert data"); //用它来对数据库进行操作 QSqlQuery query(m_db); //建表 后面是SQL语句 query.exec("create table student(id int primary key,name varchar(20))");
//向student表插入数据 query.exec("insert into student values(1,'大皮')"); }
else qDebug("insert data faild");}3. 查询数据 void Widget:n_pbn_getValue_clicked(){ //打开数据库 if(m_db.open()) { qDebug("open database success!"); QSqlQuery query(m_db); //查询student表的所有数据 query.exec("select * from student");
while(query.next()) //将student表的值打印出来 qDebug()<<"id:"<<query.value(0).toString()<<" name:"<<query.value(1).toString()<<"\n"; }
else qDebug("no");
}
4. 更新数据 void Widget:n_pbn_updateData_clicked(){
if(m_db.open()) { qDebug("update data"); QSqlQuery query(m_db); query.exec("update student set name='小皮' where id=1"); }//更新数据
5. 删除数据 void Widget:n_pbn_delete_clicked(){ //打开数据库 if(m_db.open()) { qDebug("open database success!"); QSqlQuery query(m_db); //删数据 query.exec("delete from student where id=1 and name='小皮'"); }
else qDebug("no");}
最后,程序运行结果:
|