Qtcreator连接本地Sqlite数据库(Qt5.5 + Sqlite3.15)

来源:互联网 发布:什么是噪声数据 编辑:程序博客网 时间:2024/06/06 08:28
  1. 安装Sqlite
  2. 创建数据库并创建表
  3. 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
原创粉丝点击