Qt之操作数据库(SQLite)

 

      QtSql模块提供了与平台以及数据库种类无关的访问SQL数据库的接口,这个接口由利用Qt的模型视图结构将数据库与用户界面集成的一套类来支持。     QSqlDatabase对象象征了数据库的关联。Qt使用驱动程序与各种数据库的应用编程接口进行通信。Qt的桌面版(Desktop Edition)包括如下一些驱动程序:  

 驱动程序 数据库 
 QDB2 IBM DB2 7.1版以及更新的版本 
 QIBASE Borland InterBase
 QMYSQL MySql 
 QOCI 甲骨文公司(Oracle Call Interface)
 QODBC  ODBC(包括微软公司的QSL服务)
 QPSQL  PostgreSQL的7.3版以及更高版本 
 QSQLITE QSLite第3版 
 QSQLITE2 QSLite第2版
 QTDS  Qybase自适应服务器 

         由于授权的许可限制,Qt的开源版本无法提供所有的驱动程序,当配置Qt时,即可以选择Qt本身包含的SQL驱动程序,也可以以查件的形式建立驱动程序,公共领域中不断发展的SQLite数据库将向Qt提供支持。     如下讨论关于Qt进行SQLite的基本操作。   代码如下:   //添加数据库驱动、设置数据库名称、数据库登录用户名、密码 QSqlDatabase database = QSqlDatabase::addDatabase(“QSQLITE”);  database.setDatabaseName(“database.db”); database.setUserName(“root”);   database.setPassword(“123456”);   //打开数据库 if(!database.open()) {   qDebug()<<database.lastError(); qFatal(“failed to connect.”) ; } else { //QSqlQuery类提供执行和操作的SQL语句的方法。 //可以用来执行DML(数据操作语言)语句,如SELECT、INSERT、UPDATE、DELETE,  //以及DDL(数据定义语言)语句,例如CREATE TABLE。 //也可以用来执行那些不是标准的SQL的数据库特定的命令。 QSqlQuery sql_query;    QString create_sql = “create table student (id int primary key, name varchar(30), age int)”; QString select_max_sql = “select max(id) from student”; QString insert_sql = “insert into student values (?, ?, ?)”; QString update_sql = “update student set name = :name where id = :id”; QString select_sql = “select id, name from student”; QString select_all_sql = “select * from student”; QString delete_sql = “delete from student where id = ?”; QString clear_sql = “delete from student”;   sql_query.prepare(create_sql); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { qDebug()<<“table created!”; }   //查询最大id int max_id = 0; sql_query.prepare(select_max_sql); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { while(sql_query.next()) { max_id = sql_query.value(0).toInt(); qDebug()<<QString(“max id:%1”).arg(max_id); } } //插入数据 sql_query.prepare(insert_sql); sql_query.addBindValue(max_id+1); sql_query.addBindValue(“name”); sql_query.addBindValue(25); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { qDebug()<<“inserted!”; }   //更新数据 sql_query.prepare(update_sql); sql_query.bindValue(“:name”, “Qt”); sql_query.bindValue(“:id”, 1); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { qDebug()<<“updated!”; }   //查询部分数据 if(!sql_query.exec(select_sql)) { qDebug()<<sql_query.lastError(); } else { while(sql_query.next()) { int id = sql_query.value(“id”).toInt(); QString name = sql_query.value(“name”).toString();   qDebug()<<QString(“id:%1    name:%2”).arg(id).arg(name); } }   //查询所有数据 sql_query.prepare(select_all_sql); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { while(sql_query.next()) { int id = sql_query.value(0).toInt(); QString name = sql_query.value(1).toString(); int age = sql_query.value(2).toInt();   qDebug()<<QString(“id:%1    name:%2    age:%3”).arg(id).arg(name).arg(age); } }   //删除数据 sql_query.prepare(delete_sql); sql_query.addBindValue(max_id); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { qDebug()<<“deleted!”; }   //清空表 sql_query.prepare(clear_sql); if(!sql_query.exec()) { qDebug()<<sql_query.lastError(); } else { qDebug()<<“cleared”; } }   //关闭数据库 database.close();   //删除数据库 QFile::remove(“database.db”);   可以通过一些工具对SQLite进行管理,如下:  
《Qt之操作数据库(SQLite)》  
SQLite的管理 管理工具挺多的,这里简单介绍几款:

  • SQLite Manager:开放源代码的SQLite管理工具,用来管理本地电脑上的SQLite数据库,可以独立运行(以XULRunner方式),也可以作为Firefox、Thunderbird、Seamonkey、Songbird、Komodo、Gecko等的插件。
  • SQLite Administrator:一个用来管理SQLite数据库文件的图形化工具,可进行创建、设计和管理操作。提供代码编辑器具有自动完成和语法着色,支持中文,适合初学者。
  • SQLite Database browser:一个SQLite数据库的轻量级GUI客户端,基于Qt库开发,界面清洁,操作简单,主要是为非技术用户创建、修改和编辑SQLite数据库的工具,使用向导方式实现。
    原文作者:sqlite
    原文地址: https://www.cnblogs.com/lvdongjie/p/7068530.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞