firemail

标题: Qt5数据库操作之sqlite [打印本页]

作者: Qter    时间: 2020-2-18 21:39
标题: Qt5数据库操作之sqlite
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");}
    最后,程序运行结果:







欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3