QSQLite 数据库
SQLite数据库简介、特点、优势、局限性及使用

SQLite数据库简介、特点、优势、局限性及使⽤SQLite简介SQLite是⼀个进程内的轻量级嵌⼊式数据库,它的数据库就是⼀个⽂件,实现了⾃给⾃⾜、⽆服务器、零配置的、事务性的SQL数据库引擎。
它是⼀个零配置的数据库,这就体现出来SQLite与其他数据库的最⼤的区别:SQLite不需要在系统中配置,直接可以使⽤。
且SQLite不是⼀个独⽴的进程,可以按应⽤程序需求进⾏静态或动态连接。
SQLite可直接访问其存储⽂件。
SQLite对于其他数据库有什么优势:不需要配置,不需要安装和管理不需要⼀个单独的服务器进程或操作的系统(⽆服务器的)⼀个完整的SQLite数据库存储在⼀个单⼀的跨平台的磁盘⽂件上SQLite是⾮常⼩的,轻量级的数据库,完全配置时⼩于400,省略可选功能配置时⼩于250SQLite是⼀个⾃给⾃⾜的数据库,这也就意味着不需要任何外部的依赖SQLite事务是完全兼容的,允许从多个进程或线程安全访问SQLite⽀持SQL92(SQL2)标准的⼤多数查询语⾔的功能SQLite使⽤ANSI-C编写的,并提供了简单和易于使⽤的APISQLite可在UINX(Linux,Max OS-X,Android,iOS)和Windows(Win32,WinCE,WinRT)中运⾏SQLite的局限性:在SQLite中,SQL92不⽀持的特性如下所⽰:RIGHT OUTER JOIN: 只实现了LEFT OUTER JOINFULL OUTER JOIN: 只实现了LEFT OUTER JOINALTER TABLE: ⽀持RENAME TABLE和ALTER TABLE的ADD COLUMN variants命令,不⽀持DROP COLUMN、ALTER COLUMN、ADD CONSTRAINTTrigger⽀持:⽀持FOR EACH ROW触发器,但不⽀持FOR EACH STATEMENT触发器VIEWS: 在SQLite中,视图是只读的,不能在视图中执⾏DELETE、INSERT或UPDATE语句GRANT 和 REVOKE:可以应⽤的唯⼀的访问权限是底层操作系统的正常⽂件访问权限SQLite命令与关系数据库进⾏交互的标准SQLite命令类似于SQL。
qt数据库的用法

qt数据库的用法QT数据库是QT框架提供的一种数据处理的工具,可以用于创建、连接、查询和管理数据库。
常用的QT数据库有SQLite、MySQL、PostgreSQL等。
以下是QT数据库的基本用法:1. 创建数据库连接在QT中,可以使用QSqlDatabase类创建数据库连接。
首先需要引入QtSql模块:```c++#include <QtSql>```然后,可以创建一个QSqlDatabase对象,指定数据库类型、主机名、用户名、密码等信息。
例如,创建一个连接到SQLite数据库的连接:```c++QSqlDatabase db = QSqlDatabase::addDatabase('QSQLITE'); db.setDatabaseName('mydatabase.db');```2. 打开数据库连接创建连接后,需要调用open()方法打开连接:```c++if (db.open()) {//连接成功} else {//连接失败}```3. 执行SQL查询打开连接后,可以使用QSqlQuery类执行SQL查询。
例如,查询一个表的所有记录:```c++QSqlQuery query('SELECT * FROM mytable');while (query.next()) {//处理查询结果}```4. 插入数据可以使用QSqlQuery类的exec()方法插入数据。
例如:```c++QSqlQuery query;query.exec('INSERT INTO mytable VALUES (1, 'hello')'); ```5. 更新数据可以使用QSqlQuery类的exec()方法更新数据。
例如:```c++QSqlQuery query;query.exec('UPDATE mytable SET name = 'world' WHERE id = 1');```6. 删除数据可以使用QSqlQuery类的exec()方法删除数据。
sqlite数据库的语法

sqlite数据库的语法SQLite 是一个轻量级的数据库系统,它的语法相对简单。
以下是 SQLite 的一些基本语法:1. 创建数据库和表```sql-- 创建一个名为 '' 的数据库CREATE DATABASE ;-- 使用已存在的数据库ATTACH DATABASE ;-- 创建一个名为 'mytable' 的表CREATE TABLE mytable (id INTEGER PRIMARY KEY,name TEXT,age INTEGER);```2. 插入数据```sqlINSERT INTO mytable (name, age) VALUES ('Alice', 25); INSERT INTO mytable (name, age) VALUES ('Bob', 30); ```3. 查询数据```sql-- 查询所有数据SELECT FROM mytable;-- 查询 age 大于 25 的数据SELECT FROM mytable WHERE age > 25;```4. 更新数据```sqlUPDATE mytable SET age = 31 WHERE name = 'Alice';```5. 删除数据```sqlDELETE FROM mytable WHERE name = 'Bob';```6. 创建索引 (提高查询效率)```sqlCREATE INDEX idx_name ON mytable (name);```7. 创建视图 (基于一个或多个表的虚拟表)```sqlCREATE VIEW myview AS SELECT FROM mytable WHERE age > 25; ```8. 创建触发器 (响应 INSERT、UPDATE 或 DELETE 操作时自动执行的代码)由于篇幅有限,这里只列举了一些基本的 SQLite 语法。
QT与SQLite数据库学习资料

当然我们一定要记住这个顺序,先创建数据库,然后再去创建一个表(作为菜鸟的我犯这个错误了),还有一点需要注意的红色标记的那句话,我参考的数籍一般都这样写db.setDatabaseName(":memory:");这样就把生成的数据库文件是在内存当中的,在工程文件目录下找不到。
上面使我们创建了一个数据库和一个表,那么我们如何把它呈现在我们的QTableview部件上呢?QSqlTableModel *model = new QSqlTableModel;model->setTable("person");model->setEditStrategy(QSqlTableModel::OnManualSubmit);model->select();ui->tableView->setModel(model);ui->tableView->show();上面的代码就把数据库中的信息不加筛选的打印到控件上了。
第一次写博客大家多多包涵。
Qt中提高sqlite的读写速度SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度。
例如:向数据库中插入100万条数据,在默认的情况下如果仅仅是执行query.exec("insert into DataBase(......)values(......)");就会打开和关闭文件100万次,所以速度当然会很慢。
SQLite 数据库是支持事务操作的,于是我们就可以通过事务来提高数据库的读写速度。
事务的基本原理是:数据库管理系统首先会把要执行的sql语句存储到内存当中,只有当commit()的时候才一次性全部执行所有内存中的数据库。
下面是一个简单的QT sqlite数据库事务的例子:#include <QtCore/QCoreApplication>#include <QtSql>#include <iostream>using namespace std;int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QSqlDatabase db_sqlite = QSqlDatabase::addDatabase("QSQLITE", "connSQLite");db_sqlite.setDatabaseName("SQLiteDB.db3");db_sqlite.open();QSqlQuery query("", db_sqlite);bool bsuccess = false;QTime tmpTime;// 开始启动事务db_sqlite.transaction();tmpTime.start();for(int i = 0; i<100000; i++){bsuccess = query.exec("insert into DataBase(D_1,D_2,D_3,D_4,D_5) values('TT','TT','TT','TT','TT')");if (!bsuccess){cout<<"Error occur"<<endl;break;}}// 提交事务,这个时候才是真正打开文件执行SQL语句的时候db_mit();cout<<"10000条数据耗时:"<<tmpTime.elapsed()<<"ms"<<endl;}其实QT 操作sqlite数据库增加事务的功能就是上面例子中蓝色字体标出的两句话,如果去掉这两句话,程序又会还原为:打开文件——执行query.exec(...)——关闭文件。
在Qt中使用SQLite数据库

在Qt中使⽤SQLite数据库前⾔SQLite(sql)是⼀款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,⾮常适合嵌⼊式系统。
Qt5以上版本可以直接使⽤SQLite(Qt⾃带驱动)。
⽤法1 准备1. 引⼊SQL模块在Qt项⽬⽂件(.pro⽂件)中,加⼊SQL模块:QT += sql2. 引⽤头⽂件在需要使⽤SQL的类定义中,引⽤相关头⽂件。
例如:#include <QSqlDatabase>#include <QSqlError>#include <QSqlQuery>2 使⽤1. 建⽴数据库检查连接、添加数据库驱动、设置数据库名称、数据库登录⽤户名、密码。
QSqlDatabase database;if (QSqlDatabase::contains("qt_sql_default_connection")){database = QSqlDatabase::database("qt_sql_default_connection");}else{database = QSqlDatabase::addDatabase("QSQLITE");database.setDatabaseName("MyDataBase.db");database.setUserName("XingYeZhiXia");database.setPassword("123456");}上述代码解释:(1)第⼀⾏中,建⽴了⼀个QSqlDatabase对象,后续的操作要使⽤这个对象。
(2)if语句⽤来检查指定的连接(connection)是否存在。
这⾥指定的连接名称(connection name)是qt_sql_default_connection,这是Qt默认连接名称。
sqlite数据库如何远程连接?

sqlite数据库如何远程连接?sqlite数据库如何远程连接代码如下:QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE");db.setHostName("192.168.1.160");//设置你⽹络服务器的IPdb.setDatabaseName("/share/personnel.db");//share共享⽬录下的数据库名db.setUserName("PersionSql");//数据库⽤户名和密码db.setPassword("123456");if (!db.open())qDebug() << "Failed to connect to QSQLITE";elseqDebug() << "success!";说明:访问⽹络远程数据库则必须要关闭本机和远程PC机上的防⽕墙,访问的远程数据库的路径不能为中⽂路径-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------————————————————问题:sqlite⽂件数据库存储在B计算机上,现在需要在A计算机上通过程序访问sqlite数据库,并且,A与B在同⼀个局域⽹中?如何操作?解决⽅式⼀:在B计算机上写⼀个访问sqlite的服务器,启动⼀直运⾏,在A计算机上写⼀个客户端,通过客户端-服务器模式,完成访问过程;(需要做的东西⽐较多)解决⽅式⼆:共享⽂件的⽅式来完成,具体步骤如下:步骤3:⼤功告成,现在就可以相当于在本地访问sqlite数据库⼀样的,get it.注意:在采⽤jdbc链接数据库的时候,路径中⼀定不要出现中⽂。
qt连接数据库的方法
qt连接数据库的方法1. 简介Qt是一个跨平台的开发框架,提供了丰富的GUI控件和易于使用的API。
它也支持与各种数据库的连接。
在本篇文章中,我们将介绍Qt如何连接数据库。
我们将涵盖Qt 支持的各种数据库类型,例如SQLite、MySQL和PostgreSQL等。
2. SQLite数据库连接SQLite是一个轻量级的关系型数据库,可以在任何平台上使用,并且无需安装。
以下是Qt连接SQLite数据库的示例代码:```cppinclude <QCoreApplication>include <QtSql>int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("test.db");if (!db.open()){qDebug() << "Failed to connect to database.";return 1;}qDebug() << "Database connected successfully.";// Do some database-related work heredb.close();return a.exec();}```在上面的示例中,我们首先使用`QSqlDatabase::addDatabase()`函数创建一个数据库连接,然后使用`setDatabaseName()`函数指定要连接的数据库文件的名称。
如果连接成功,则应该输出“Database connected successfully.”,否则输出“Failed to connect to database.”。
qt sqlite 数组
qt sqlite 数组
在Qt中使用SQLite数据库存储数组需要一些特殊的处理方法。
SQLite本身并不直接支持数组类型,但可以通过将数组转换为字符
串存储在数据库中,或者使用多个表来模拟数组的存储。
一种常见的方法是将数组转换为逗号分隔的字符串,然后将其
存储在数据库的一个字段中。
在读取数据时,再将字符串分割为数组。
这种方法简单直接,但需要在应用程序中进行字符串和数组的
转换操作。
另一种方法是使用多个表来模拟数组的存储。
例如,可以创建
一个主表存储数组的其他属性,然后创建一个关联表来存储数组的
元素,通过外键关联两个表。
这种方法需要更多的表设计和数据库
操作,但能更好地支持数组的增删改查操作。
在Qt中操作SQLite数据库,可以使用Qt提供的QtSql模块。
首先需要使用QSqlDatabase来连接数据库,然后执行SQL语句来创
建表、插入数据、查询数据等操作。
对于数组的存储和操作,可以
通过QString来表示数组,并在应用程序中进行字符串和数组的转
换操作,或者通过多个表来模拟数组的存储。
总之,在Qt中使用SQLite存储数组需要根据具体的需求和数据结构选择合适的方法,然后通过QtSql模块来操作数据库实现相应的功能。
希望这些信息能对你有所帮助。
qsqldatabase sqlite 多线程用法
qsqldatabase sqlite 多线程用法在使用 Qt 中的 QSqlDatabase 连接 SQLite 数据库时,如果涉及到多线程操作,需要特别注意数据库连接的管理和线程安全性。
以下是在多线程环境中使用QSqlDatabase 连接SQLite 数据库的一些建议:1. 每个线程拥有独立的数据库连接:在多线程应用程序中,最好为每个线程创建独立的数据库连接。
这样可以确保在不同线程间不会共享数据库连接,从而避免潜在的线程安全问题。
// 在每个线程中创建独立的数据库连接QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "connectionName");db.setDatabaseName("databaseName.sqlite");db.open();2. 管理连接和关闭:确保在每个线程中适时地打开和关闭数据库连接。
可以通过连接的 isOpen() 方法检查连接的状态,并使用 close() 方法关闭连接。
QSqlDatabase db = QSqlDatabase::database("connectionName");if (!db.isOpen()) {if (db.open()) {// 连接成功打开} else {// 连接打开失败}}// 使用数据库连接进行数据库操作db.close(); // 在适当的时候关闭连接3. 线程间通信:如果需要在不同线程之间共享数据库连接的信息,考虑使用Qt 的信号和槽机制或者其他线程安全的通信方式。
4. 异步查询:如果需要在后台执行长时间运行的查询,可以考虑使用异步查询,以避免阻塞主线程。
示例代码:以下是一个简单的示例,演示如何在多线程中使用QSqlDatabase 连接 SQLite 数据库:#include <QSqlDatabase>#include <QSqlQuery>#include <QThread>class WorkerThread : public QThread {void run() override {// 在每个线程中创建独立的数据库连接QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "connectionName");db.setDatabaseName("databaseName.sqlite");if (db.open()) {QSqlQuery query(db);query.exec("SELECT * FROM tableName");while (query.next()) {// 处理查询结果}db.close();}}};int main() {WorkerThread thread1;WorkerThread thread2;// 启动线程thread1.start();thread2.start();// 等待线程完成thread1.wait();thread2.wait();return 0;}这个示例中,每个线程都有独立的数据库连接,并在其运行期间执行数据库查询。
sqlite数据库的设计原理
sqlite数据库的设计原理SQLite是一种轻量级的嵌入式关系型数据库管理系统,其设计原理包括数据存储、索引、事务处理和查询优化等方面。
SQLite的数据存储原理是基于B树的数据结构。
B树是一种自平衡的树状数据结构,用于存储和管理数据,具有高效的查找、插入和删除操作。
SQLite通过B树来组织和存储数据,将数据以页的形式存储在磁盘上,每个页的大小默认为4KB。
这种存储方式能够提高数据的读写效率,同时也保证了数据的持久性。
SQLite利用索引来加速数据访问。
索引是一种数据结构,用于快速定位和访问表中的数据。
SQLite支持多种类型的索引,包括B树索引、哈希索引和全文索引等。
通过在关键列上创建索引,可以大大提高查询效率。
SQLite会自动选择合适的索引类型,并根据查询条件进行索引选择和优化。
事务处理也是SQLite的设计原理之一。
事务是一组数据库操作的逻辑单元,要么全部执行成功,要么全部回滚到初始状态。
SQLite使用了原子性、一致性、隔离性和持久性(ACID)的事务模型,保证了数据的完整性和一致性。
在SQLite中,可以使用事务来对多个数据操作进行批处理,提高数据的处理效率和一致性。
SQLite还通过查询优化来提高查询性能。
查询优化是指通过重写查询语句、选择合适的索引和调整查询执行计划等方式,使得查询能够以最快的速度返回结果。
SQLite使用了查询优化器来分析查询语句,选择最优的执行计划,并通过使用索引和缓存等技术来加速查询操作。
同时,SQLite还支持预编译和参数化查询,进一步提高了查询性能和安全性。
SQLite的设计原理涉及到数据存储、索引、事务处理和查询优化等方面。
它通过B树存储数据,利用索引加速数据访问,使用事务保证数据的完整性,通过查询优化提高查询性能。
这些设计原理使得SQLite成为一款高效可靠的嵌入式数据库管理系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这里我们只是演示了一下使用这个框架完成最简单的程序的过程,只起到抛砖引玉的作用。
这个框架很复杂,但是功能也很强大,Qt Creator中自带了几个相关的例子(在帮助中查找Graphics View Examples即可),你可以参考一下。
因为篇幅问题,我们就只讲这么多,如果以后有机会,我会推出一个相关的专题来讲述这个框架。
分类:Qt系列教程作者: yafeilinux 日期:四月 30th, 2010. 3,006 viewsTags: 2D绘图, creator, qt, yafeilinux, 教程二十一、Qt数据库(一)简介本文章原创于转载请注明出处。
从今天开始我们学习Qt数据库编程的内容。
先说明:我们以后使用现在最新的基于Qt 4.6.2的Qt Creator 1.3.1 Windows版本,该版本是2010年2月17日发布的。
数据库几乎是每个较大的软件所必须应用的,而在Qt中也使用QtSql模块实现了对数据库的完美支持。
我们在Qt Creator的帮助中查找QtSql Module,其内容如下图:可以看到这个模块是一组类的集合,使用这个模块我们需要加入头文件#include <QtSql>,而在工程文件中需要加入一行代码:QT += sql这里每个类的作用在后面都有简单的介绍,你也可以进入其中查看其详细内容。
下面我们先简单的说一下QSqlDatabase类和QSqlQuery类。
QSqlDatabase类实现了数据库连接的操作,现在Qt支持的数据库类型有如下几种:而现在我们使用的免费的Qt只提供了SQLite和ODBC数据库的驱动(我们可以在Qt Creator 安装目录下的qt\plugins\sqldrivers文件夹下查看),而其他数据库的驱动需要我们自己添加。
SQLite是一个小巧的嵌入式数据库,关于它的介绍你可以自己在网上查找。
QSqlQuery类用来执行SQL语句。
(关于SQL语句:在我的教程中只会出现很简单的SQL语句,你没有相关知识也可以看懂,但是如果想进行深入学习,就需要自己学习相关知识了。
)下面我们就先利用这两个类来实现最简单的数据库程序,其他的类我们会在以后的教程中逐个学习到。
1.新建Qt控制台工程。
2.选择上QtSql模块,这样就会自动往工程文件中添加QT += sql 这行代码了。
3.修改main.cpp中的内容如下。
#include <QtCore/QCoreApplication>#include <QtSql>int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”); //添加数据库驱动db.setDatabaseName(“:memory:”); //数据库连接命名if(!db.open()) //打开数据库{return false;}QSqlQuery query; //以下执行相关QSL语句query.exec(“create table student(id int primary key,name varchar)”);//新建student表,id设置为主键,还有一个name项query.exec(“insert into student values(1,’xiaogang’)”);query.exec(“insert into student values(2,’xiaoming’)”);query.exec(“insert into student values(3,’xiaohong’)”);//向表中插入3条记录query.exec(“select id,name from student where id >= 2″);//查找表中id >=2 的记录的id项和name项的值while(query.next()) //query.next()指向查找到的第一条记录,然后每次后移一条记录{int ele0 = query.value(0).toInt(); //query.value(0)是id的值,将其转换为int型QString ele1 =query.value(1).toString();qDebug() << ele0 <<ele1 ; //输出两个值}return a.exec();}我们使用了SQLite数据库,连接名为“:memory:”表示这是建立在内存中的数据库,也就是说该数据库只在程序运行期间有效。
如果需要保存该数据库文件,我们可以将它更改为实际的文件路径。
4.最终效果如下。
5.我们可以将主函数更改如下。
int main(int argc, char *argv[]){QCoreApplication a(argc, argv);qDebug() << “Available drivers:”;QStringList drivers = QSqlDatabase::drivers();foreach(QString driver, drivers)qDebug() << “\t” << driver;return a.exec();}这样运行程序就可以显示现在所有能用的数据库驱动了。
可以看到现在可用的数据库驱动只有三个。
分类:Qt系列教程作者: yafeilinux 日期:四月 30th, 2010. 4,062 views Tags: creator, qt, yafeilinux, 教程, 数据库二十二、Qt数据库(二)添加MySQL数据库驱动插件本文章原创于转载请注明出处。
在上一节的末尾我们已经看到,现在可用的数据库驱动只有3种,那么怎样使用其他的数据库呢?在Qt中,我们需要自己编译其他数据库驱动的代码,让它们以插件的形式来使用。
下面我们就以现在比较流行的MySQL数据库为例,说明一下怎样在Qt Creator中添加数据库驱动插件。
在讲述之前,我们先看一下Qt Creator中数据库的插件到底放在哪里。
我们进入Qt Creator的安装目录,然后进入相对应的文件夹下,比方我这里是D:\Qt\2010.02.1\qt\plugins\sqldrivers在这里我们可以看见几个文件,如下图:根据名字中的关键字,我们可以判断出这就是ODBC数据库和SQLite数据库的驱动插件。
下面我们编译好MySQL数据库驱动后,也会在这里出现相对应的文件。
首先:我们查看怎样安装数据库插件。
我们打开Qt Creator,在帮助中搜索SQL Database Drivers关键字。
这里列出了编译Qt支持的所有数据库的驱动的方法。
我们下拉到在windows上编译QMYSQL数据库插件的部分,其内容如下:这里详细介绍了整个编译的过程,其可以分为以下几步:第一,下载MySQL的安装程序,在安装时选择定制安装,这时选中安装Libs和Include文件。
安装位置可以是C:\MySQL 。
注意:安装位置不建议改动,因为下面进行编译的命令中使用了安装路径,如果改动,那么下面也要进行相应改动。
第二,进行编译。
我们按照实际情况输入的命令如下。
cd %QTDIR%\src\plugins\sqldrivers\mysqlqmake “INCLUDEPATH+=C:\MySQL\include” “LIBS+=C:\MySQL\lib\opt\libmysql.lib” mysql.promingw32-make注意:在上面的命令中qmake之后如果加上“-o Makefile”选项,那么这个插件只能在以release模式编译程序时才能使用,所以我们上面没有加这个选项。
然后:我们按照上面的过程进行相应操作。
1.我们先下载MySQL的安装文件。
我们可以到MySQL的官方主页进行下载最新的MySQL的windows版本,现在具体的下载页面地址为:/downloads/mirror.php?id=383405#mirrors我们不进行注册,直接点击其下面的No thanks, just take me to the downloads!可以在其中选择一个镜像网点进行下载,我使用的是Asia下的最后一个,就是台湾的镜像网点下载的。
下载到的文件名为:mysql-essential-5.1.44-win32 ,其中的win32表明是32位的windows 系统,这一点一定要注意。
文件大小为40M左右。
当然你也可以到中文网站上进行下载:/,随便下一个windows的版本就行。
2.安装软件。
我们选择定制安装Custom。
然后选中安装Include文件和Lib文件。
我们将安装路径更改为:C:\MySQL 。
最终的界面如下。
安装完成后,我们不进行任何操作,所以将两个选项都取消。
3.进行编译。
我们在桌面上开始菜单中找到Qt Creator的菜单,然后打开Qt Command Prompt。
然后输入第一条命令cd %QTDIR%\src\plugins\sqldrivers\mysql 后按回车,运行效果如下。
然后输入第二条命令:qmake “INCLUDEPATH+=C:\MySQL\include” “LIBS+=C:\MySQL\lib\opt\libmysql.lib” mysql.pro按回车后运行效果如下:最后输入:mingw32-make ,按下回车后经过几秒的编译,最终效果如下:整个编译过程中都没有出现错误提示,可以肯定插件已经编译完成了。
4.我们再次进入Qt Creator安装目录下存放数据库驱动插件的文件夹。
我这里是D:\Qt\2010.02.1\qt\plugins\sqldrivers其内容如下:可以看到已经有了和MySQL相关的文件了。
最后:我们编写程序测试插件。
1.我们将上一次的主函数更改如下。
int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QSqlDatabase db = QSqlDatabase::addDatabase(“QMYSQL”); //添加数据库驱动return a.exec();}运行程序,效果如下。
这里提示:QSqlDatabase: QMYSQL driver not loaded。
2.这时我们需要将C:\MySQL\bin目录下的libmySQL.dll文件复制到我们Qt Creator安装目录下的qt\bin目录中。