#include <QCoreApplication>
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QString>
#include <QSqlRecord>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//! 添加数据库驱动QSqlDatabase mySqlLiteDB = QSqlDatabase::addDatabase("QSQLITE");//! 设置数据库名称mySqlLiteDB.setDatabaseName("E:/work/qe/mytest1/database.db");//! 打开数据库if(!mySqlLiteDB.open())return false;//! 以下执行相关sql语句QSqlQuery mySqlQuery;//! 清空student表mySqlQuery.exec("drop table student");//! 新建student表,id设置为主键,还有一个name项mySqlQuery.exec("create table student (id int primary key, name vchar,course int)");//!批量导入QStringList strListStdName;strListStdName<<"wang bin"<<"xiao yu"<<"ye mei";QStringList strListStdCourse;strListStdCourse<<"Math"<<"English"<<"Computer";mySqlQuery.prepare("INSERT INTO student (id,name, course) ""VALUES (:id,:name, :course)");for (int i = 0; i < strListStdName.size(); i++){mySqlQuery.bindValue(":id",i);                         //! 加入主键mySqlQuery.bindValue(":name", strListStdName[i]);      //! 向绑定值里加入名字mySqlQuery.bindValue(":course", strListStdCourse[i]);  //! 课程mySqlQuery.exec();                                     //! 加入库中}//! 向表中插入1条数据mySqlQuery.bindValue(0,3);mySqlQuery.bindValue(1,"wang han");mySqlQuery.bindValue(2,"Chinese");mySqlQuery.exec();mySqlQuery.exec("insert into student values(3,'wang han','Chinese')");//! 查找表中id >=1 的记录的id项和name项的值mySqlQuery.exec("select * from student where id >= 0");//! query.next()指向查找到的第一条记录,然后每次后移一条记录QSqlRecord mySqlRec = mySqlQuery.record();while(mySqlQuery.next()){//! 获取query所指向的记录在结果集中的编号int nRowNum = mySqlQuery.at();//! 获取每条记录中属性(即列)的个数int nColumnNum = mySqlQuery.record().count();//! 获取"name"属性所在列的编号,列从左向右编号,最左边的编号为0int nFieldNo = mySqlQuery.record().indexOf("name");nFieldNo     = mySqlRec.indexOf("course");//! 获取id属性的值,并转换为int型int stud_id = mySqlQuery.value(0).toInt();//! 获取name属性的值QString stud_name = mySqlQuery.value(1).toString();//! 获取course属性的值QString stud_course = mySqlQuery.value(2).toString();//! 输出结果qDebug() << nRowNum << nColumnNum << nFieldNo << stud_id << stud_name << stud_course;}//! 定位到结果集中编号为2的记录,即第三条记录,因为第一条记录的编号为0qDebug() << "exec seek(2) :";if(mySqlQuery.seek(2)){qDebug() << "rowNum is : " << mySqlQuery.at()<< " id is : " << mySqlQuery.value(0).toInt()<< " name is : " << mySqlQuery.value(1).toString();}//! 定位到结果集中最后一条记录qDebug() << "exec last() :";if(mySqlQuery.last()){qDebug() << "rowNum is : " << mySqlQuery.at()<< " id is : " << mySqlQuery.value(0).toInt()<< " name is : " << mySqlQuery.value(1).toString();}//! 修改表内容mySqlQuery.exec("update student set course = 'Chinese' where id = 1");mySqlQuery.exec("alter table student add score int");mySqlQuery.exec("alter table student alter column score vchar(20)");//! 删除表内容//mySqlQuery.exec("delete from student where id = 1");return a.exec();}

Qt操作SQLite数据库练习(20200215)相关推荐

  1. Qt操作SQLite数据库的三种方式

    Qt访问Sqlite数据库的三种方式(即使用三种类库去访问),分别为QSqlQuery.QSqlQueryModel.QSqlTableModel,对于这三种类库,可看为一个比一个上层,也就是封装的更 ...

  2. QT操作sqlite数据库汇总

    QT自带的QSqlite数据库中实现id主键自增长 QSqlite是QT自带的轻量级数据库,使用起来非常方便,对系统环境也没有任何的环境要求,可移植性非常好,适合数据量不是太大,要求不是太高的程序.本 ...

  3. Qt操作SQLite数据库——创建、打开、关闭、增加、删除和修改操作

    QtSql模块提供了与平台以及数据库种类无关的访问SQL数据库的接口,这个接口由利用Qt的模型视图结构将数据库与用户界面集成的一套类来支持. QSqlDatabase对象象征了数据库的关联.Qt使用驱 ...

  4. QT操作Sqlite数据库修改字段名称和删除字段

    目录 一.QSqlDatabase概述 二.QSqlDatabase模块的使用 三.修改字段名称和删除字段 1.sql语句执行步骤 2.程序执行 一.QSqlDatabase概述 QSqlDataba ...

  5. QT 操作 sqlite数据库(二)----问题与其解决方案

    上一节从网络上找了一个一般的示例给大家,下面将逐步修改代码将其变为常规开发中可用的可复用代码. 首先说下上面的代码在本人实际使用过程中遇到的问题及如何结果 1.创建程序后提示"QSqlDat ...

  6. QT读写Sqlite数据库三种方式

    QT对一些基本的数据库的访问封装,可谓是极大的方便的我们开发人员,现在我们就来说下QT对Sqlite这个数据库的读写,Sqlite是一个比较小型的本地数据库,对于保存一些软件配置参数或量不是很大的数据 ...

  7. QT读写Sqlite数据库的三种方式

    QT对一些基本的数据库的访问封装,可谓是极大的方便的我们开发人员,现在我们就来说下QT对Sqlite这个数据库的读写,Sqlite是一个比较小型的本地数据库,对于保存一些软件配置参数或量不是很大的数据 ...

  8. Qt连接sqlite数据库

    Qt连接sqlite数据库步骤 ①添加数据库模块 QT += sql ②添加头文件 #include<QSqlDatabase> #include<QSqlQuery> //s ...

  9. python读数据库的通信协议是,Python操作SQLite数据库过程解析

    SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统. 不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协 ...

最新文章

  1. Subversion For Windows的安装与使用
  2. CentOS笔记:yum使用说明
  3. 计算平均指令时间_为什么向量化计算(vectorization)会这么快?
  4. 她穿着由自己17封拒稿信做成的裙子,通过了博士论文答辩!
  5. 古有诸葛亮八卦阵阻敌,今有iptables护网安
  6. sql server 2005 T-SQL @@TOTAL_WRITE (Transact-SQL)
  7. WebService 服务 转
  8. 菜鸟电脑木马查杀大全
  9. 多目标优化算法:多目标樽海鞘算法MOSSA(提供MATLAB源码)
  10. Mac小白必备技巧4—Mac文件管理器需要的快捷键有什么?
  11. 最新华为EMUI 11.0.0 Mate40和Mate30成功安装Google play及谷歌套件(附带解决谷歌弹窗)的方法
  12. Cannot access a disposed object. A common cause of this error is disposing a context that ...问题解决
  13. 【C++】将小写阿拉伯数字转换为大写汉字数字(将数字用中文的方法读出来)
  14. MATLAB泰勒级数展开
  15. 今天吃什么 随机选择(抽奖,抽人适用)纯html、css静态页面
  16. 车载系统大战:左边是BAT,右边是华为小米们
  17. 吐槽智能手机上那些不爽的事
  18. 普林斯顿大学算法公开课笔记
  19. My SQL 创建数据库
  20. 自学本科计算机课程要多久,22岁完全0基础自考计算机本科是否现实?

热门文章

  1. boost::safe_numerics模块实现测试添加 constexpr
  2. boost::range模块strided相关的测试程序
  3. boost::hana::maybe用法的测试程序
  4. GDCM:gdcm::Printer的测试程序
  5. GDCM:gdcm::ByteSwapFilter的测试程序
  6. DCMTK:测试VR类的compare()运算符
  7. VTK:相互作用之StyleSwitch
  8. OpenCV霍夫直线检测的实例(附完整代码)
  9. Qt Designer的信号和插槽编辑模式
  10. OpenGL绘制一个三角形