Qtcreator连接本地Sqlite数据库(Qt5.5 + Sqlite3.15)
来源:互联网 发布:什么是噪声数据 编辑:程序博客网 时间:2024/06/06 08:28
- 安装Sqlite
- 创建数据库并创建表
Qtcreator连接Sqlite数据库
安装Sqlite
[官网下载](http://www.sqlite.org/download.html%20%E2%80%9C%E4%B8%8B%E8%BD%BD%E5%9C%B0%E5%9D%80%E2%80%9D) 选择sqlite-tools-win32-x86-3150100.zip和DLL库文件,即可,将Dell库文件拷贝到qtcreator的安装目录的bin文件夹下!解压sqlite-tools-win32-x86-3150100.zip文件,运行sqlite3.exe,即可新建数据库以及表格。(为了方便运行可以将sqlite3的安装路径添加到系统path,若添加了path路径可以直接在dos下输入sqlite3进入数据库)
创建数据库和表
新建数据库:test.db在命令行输入:sqlite3.exe test.db 完成新建数据库的工作。创建表:test命令行输入:create table test(id integer PRIMARY KEY, name text);完成表的新建工作若想在表中添加数据可以自行使用SQL语句添加,或者使用可视化工具添加数据到表中!*注意:Sqlite数据库的数据类型比较有限使用前最好看看支持哪些数据类型!*
连接本地数据库
新建一个简单的widget qt工程:首先在工程文件.pro中添加 QT += sql (将qt自带的sqlite库文件包含进去,具体文件在安装目录mingw492_32\plugins\sqldrivers中可以查看)
//mainwindow.h 包含的头文件#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QDebug>#include <QtSql/QSqlDatabase>#include <QtSql/QSqlQuery>#include <QtSql/QSqlDriver>#include <QtSql/QSqlError>#include <QApplication>#include <QString>#include <QTextEdit>#include <QObject>#include <QDateTime>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private: Ui::MainWindow *ui;};
//main.cpp实现#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); QTextEdit display; display.resize(500, 160); display.show(); //添加数据库驱动文件,常见的类型和数据类型基本一样,这里选择使用Qsqlite驱动 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加具体数据库,这里使用之前创建好的数据库,使用绝对路径,注意这里使用两个反斜杠,由于\有转义的作用,因此需要使用两个连续的\\才能转义得到\,因此这里需要连续使用两个\\。 db.setDatabaseName("D:\\qt-project\\qt-on-sqlite\\test.db"); //采用下面这种方式添加数据库时,qt会在内存中创建一个临时的数据库,并且需要在程序中完成对表的创建。 //db.setDatabaseName("test.db");//存放在内存中,临时数据库 bool ok = db.open();//open()方法打开数据库,成功返回true。操作前最好进行判读。 if(ok) { //声明查询实例query,并将该实例绑定db这个数据库,此处最好绑定数据库否则可能造成执行query语句时,数据库没有打开的错误。 QSqlQuery query = QSqlQuery(db); //执行数据库语句的方法,可以将数据库语句先存放在Qstring中,然后调用调用查询实例的方法exec执行语句// QString crate_table = "create table man(id integer PRIMARY KEY, name text)";// query.prepare(crate_table);//存放准备// query.exec( );// QString insert = "insert into man(id,name) values (1,'hyw')"; // query.prepare(insert);// query.exec( ); //也可以直接执行SQL语句在exec方法中 if(query.exec("select * from man")) { int numRow = 0; //检查数据库驱动的完备性,查询结果影响到的行数 if(db.driver()->hasFeature(QSqlDriver::QuerySize)) { numRow = query.size();//将影响到的行数记录下来 } else { //不支持,定位到记录的最后一行 query.last(); numRow = query.at() + 1; query.seek(-1); } QString id,name; display.append("============================="); while(query.next()) //将结果循环记录下来,定位来下一条记录 { id = query.value(0).toString();//第一列值 name = query.value(1).toString();//第二例值 QString result = id + " " + name; display.append(result); } display.append("============================="); //打印总行数 display.append(QString("totall %1 rows").arg(numRow)); } else // 执行SQL语句失败 { QSqlError error = query.lastError(); display.append("err: " + error.databaseText()); } } else //打开数据库失败 { display.append("open sql failed!"); display.append("reason:" + db.lastError().databaseText()); } return a.exec();}
运行结果:
可以看到运行结果与可视化工具结果一直,完成了对本地数据库的访问。
0 0
- Qtcreator连接本地Sqlite数据库(Qt5.5 + Sqlite3.15)
- qt5连接sqlite数据库实例
- qt5连接sqlite数据库实例
- qt连接sqlite数据库(win下Qt5)
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- Sqlite数据库sqlite3命令
- 100道动态规划——13 UVA 10163 Storage Keepers 有约束条件下的DP,递推,不能使用结构体作为基本单位
- PHP MySQLi 增删改查
- PC - 来电自动开机设置
- Spring定时任务-xml实现
- Redis和Memcache对比及选择
- Qtcreator连接本地Sqlite数据库(Qt5.5 + Sqlite3.15)
- 嵌入式设计与开发-基础入门
- SPOJ DIVCNT2
- Visual Stduio快捷键
- PHPExcel下载excel文件正常,打开报错:'break' not in the 'loop' or 'switch' context
- spring多数据源配置
- 面试机器学习、数据挖掘、大数据岗位时遇到的各种问题
- cocos2d-x3.1动作API合集
- caffe study-数据结构