Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2880|回复: 0
打印 上一主题 下一主题

Qt5数据库操作之sqlite

[复制链接]

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
跳转到指定楼层
楼主
发表于 2020-2-18 21:39:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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");}
    最后,程序运行结果:


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-23 03:51 , Processed in 0.058978 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表