6.QT连接sqlite数据库Apple的学习笔记

admin 2023年3月6日20:08:08评论23 views字数 2720阅读9分4秒阅读模式

一,前言

最近看了下架构的演变,从独立式->MCV->SOA->微服务。而我现在做个单机版的工具的话,顶多用到数据库和多线程,我的小工具应该会选MCV架构。将来有必要再扩展以太网联机多人操作功能。那么这都需要用到数据库。

二,常用数据库软件选型

10年前我对SQL语法还是很熟悉的,主键,外键等都很清晰,但是当时用的是access。现在基于win10的SQL可视化软件有哪些呢!网上搜索了下mysql和sqlite用的多。但是mysql的可视化编辑器免费版本少。所以我折腾了下,也算是安装完成了。
于是用QT连接mysql,结果显示驱动不可用。我网上搜索了下,也有解决方案,但是比较麻烦。所以我选用sqlite,QT已经集成的,只是sqlite的可视化工具我一开始没找到,后来折腾了下找到了SQlite Expert Personal是个人免费版,已经满足我的编辑及可视化要求了。
那么QT连接数据库,最终我选择轻量级的Sqlite数据库,它不需要连接,直接是个db文件。

三,QT数据库方法API

void Widget::initDB(){    //建立并打开数据库    QSqlDatabase database;    database = QSqlDatabase::addDatabase("QSQLITE");    qDebug()<<qapplication::applicationdirpath();< span=""></qapplication::applicationdirpath();<>    database.setDatabaseName(QApplication::applicationDirPath() + "/CONFIG/" + "testApple.db");    if (!database.open())    {        qDebug() << "Error: Failed to connect database." << database.lastError();    }    else    {        qDebug() << "Succeed to connect database." ;    }
//创建表格 QSqlQuery sql_query; //先清空一下表,可按需添加此句 sql_query.exec("DROP TABLE student"); //创建表格student if(!sql_query.exec("create table student(UserId int primary key, UserName text, PassWord text)")) { qDebug() << "Error: Fail to create table."<< sql_query.lastError(); } else { qDebug() << "Table created!"; } // 填充表 if(!sql_query.exec("INSERT INTO student VALUES(1, 'AppleCai', '23')")) { qDebug() << "Error: Fail to create table."<< sql_query.lastError(); } else { qDebug() << "add one created!"; } // 批量填充表 QStringList names; names<<"小A"<<"小B"<<"小C"<<"小D"<<"小E"<<"小F"<<"小G"<<"小H"<<"小I";
QStringList password; password<<"11"<<"12"<<"13"<<"21" <<"22"<<"23"<<"31"<<"32"<<"33"; // 绑定关键字后才能进行操作 sql_query.prepare("INSERT INTO student (UserId, UserName,PassWord) " "VALUES (:UserId, :UserName, :PassWord)"); qint8 i=0; foreach (QString name, names) //从names表里获取每个名字 { sql_query.bindValue(":UserId", i+2); //向绑定值里加入名字 sql_query.bindValue(":UserName", name); //成绩 sql_query.bindValue(":PassWord", password[i] ); //班级 if(!sql_query.exec()) { qDebug() << "Error: Fail."<< sql_query.lastError(); }
i++; } // 读取sqlite studentInfo tmp; QVector infoVect; //数据库缓存 sql_query.exec("SELECT * FROM student WHERE UserId >= 5 AND UserId <= 9;"); while(sql_query.next()) { tmp.UserId = sql_query.value(0).toInt(); tmp.UserName = sql_query.value(1).toString(); tmp.PassWord = sql_query.value(2).toString(); qDebug()<<tmp.userid<<tmp.username<<tmp.password;< span=""></tmp.userid<<tmp.username<<tmp.password;<> infoVect.push_back(tmp); } qDebug("done");
//更改表中数据 sql_query.prepare("UPDATE student SET PassWord='admin' WHERE UserName='AppleCai'"); if(!sql_query.exec()) { qDebug() << "Error: Fail."<< sql_query.lastError(); }
//删除表中数据 sql_query.prepare("DELETE FROM student WHERE UserName='小H'"); if(!sql_query.exec()) { qDebug() << "Error: Fail."<< sql_query.lastError(); }}

四,效果

6.QT连接sqlite数据库--Apple的学习笔记
image.png

五,小结

数据库环境搭建成功,QT访问sqlite数据的基本方法算是掌握了。QT数据库已入门。

6.QT连接sqlite数据库--Apple的学习笔记


作者:applecai
链接:https://www.jianshu.com/p/41d73d9d36ed
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文始发于微信公众号(汇编语言):6.QT连接sqlite数据库--Apple的学习笔记

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月6日20:08:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   6.QT连接sqlite数据库Apple的学习笔记http://cn-sec.com/archives/1253899.html

发表评论

匿名网友 填写信息