在编写程序的过程中,有一些数据希望软件再次运行时可以记录上一次用户的一些操作,比如服务器的ip和端口号等。对于数据量比较小的,在Qt中可以使用QSetting来记录。但对于一些数据量比较大的,肯定不能使用QSetting了。此时一般会选择使用数据库来记录。
这里简单介绍下SQLite。SQLite是一款轻型的文件型数据库。主要应用于嵌入式领域,支持跨平台。另外SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
程序平台:ubuntu、qt5
本次主要验证创建数据库、创建表、插入数据、修改数据、删除数据、查找数据等功能。
1. 创建数据库文件设置名称
代码语言:javascript复制void Widget::on_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. 创建表插入数据
代码语言:javascript复制void Widget::on_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. 查询数据
代码语言:javascript复制void Widget::on_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. 更新数据
代码语言:javascript复制void Widget::on_pbn_updateData_clicked()
{
if(m_db.open())
{
qDebug("update data");
QSqlQuery query(m_db);
query.exec("update student set name='小皮' where id=1");
}//更新数据
5. 删除数据
代码语言:javascript复制void Widget::on_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");
}
最后,程序运行结果: