QT中如何使用MYSQL 以及静态编译QT中如何加上MYSQL(2)

接上一篇的续写:

前文提到"最终写一个demo的my sql工程  发现可以成功运行,但是找不到 创建的数据库文件 原因再查找"

注意 上面这个问题对应的代码是如下的:

#include <QDebug>
#include <QSqlDatabase>
#include <QSqlQuery>

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    //    db.setDatabaseName("my.db");
    db.setHostName("localhost");
    db.setPort(3306);
    db.setDatabaseName("datatest");
    db.setUserName("root");
    db.setPassword("123456");
    if (!db.open()) {
        qDebug()<<"create database failed";
    } else {
        qDebug()<<"create database success";
    }

    QSqlQuery query(db);
    query.exec("create table student (id primariy key, name varchar(20))");
    query.exec("insert into student values(1, ‘wangli‘)");
    query.exec("select * from student");
    while (query.next()) {
        qDebug()<<"id:"<<query.value(0).toInt()<<" name:"<<query.value(1).toString();
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

 

问题的原因是:

query.exec("create table student (id primariy key, name varchar(20))");  这一行代码 现在是正确的之前错误的写法是query.exec("create table student (id primariy key, name vchar(20))");

这一个小问题,导致我一直以为公司电脑的配置qt开发环境无法使用mysql 数据库,导致我整整纠结了两天。这里记录我在qt中使用mysql  针对这个问题的分析过程:<1>首先我写一个demo 列出安装的qt5.5.0版本里支持的所有sql drivers,发现里面有MYSQL   窃喜,以为可以像使用sqlite那样使用mysql<2>实际上按照网上的操作,先下载mysql   然后迫不及待地写代码验证  发现还是不能用    debug目录下没有XXX.db文件生成,纠结了很久,最后发现mysql是没有XXX.db文件的<3>然后自己手动编译mysql 插件 N遍了, 我一直以“DEBUG目录下是否有XXX.db文件”  作为mysql是否OK  这个是错误的,下面继续说<4>我怀疑是下载的mysql版本的问题, 位数问题, 安装路径有空格和中文的问题  qt对应的版本和位数问题, 最终还看博客,有人提出qt 5.5 mysql的源码有问题,最终没结果<5>最终用家里的电脑,win7系统 一样的qt版本,按照如下的就好了

这里作一个小总结: <1>qt中使用mysql数据库的方法是:qt比较老的版本 需要自己手动编译mysql 插件   参见我在上一篇博客里的链接<2>我现在用的qt是5.5.0   里面是可以直接使用mysql数据库的, 直接一句话就是  “将mysql安装目录中的libmysql.dll文件拷贝到QT安装目录下的bin目录中就可以了”   我的电脑上就是 将D:\mysql\lib\libmysql.dll  注意 这里D:\mysql目录是 mysql安装的目录     拷贝到 C:\Qt\Qt5.5.0\5.5\mingw492_32\bin 下面去<3>由于qt中是在字符串里写sql语句的,很多时候,sql语句出错也不会有明显的提示,所以只能 在终端里 测试自己编写的数据库语句没有问题,才能发到代码里,否则问题很难追查

下面写一下使用mysql的详细过程:<1>到mysql官网下载一个mysql版本具体就是community->Downloads->  选择一个版本   我选的是如下的

下载好了安装  在D盘创建一个mysql目录   点击msi文件,将其安装到创建的目录下,这里设置密码为 123456  端口保持默认 3306 不变  安装完了如下

然后将lib下面的libmysql.dll拷贝到 C:\Qt\Qt5.5.0\5.5\mingw492_32\bin目录下


好了,接下来可以在qt中使用mysql数据库了。

<2>  用法示例:将mysql路径加入环境变量   D:\mysql\bin 加入环境变量  运行终端  输入 mysql -u root -p    输入密码  123456  如下


代码就是上面工程里使用的代码:<1>首先用命令行登录mysql   创建了一个数据库名字叫做 datatest<2>代码里连接到这个数据库,并且创建了一个表 student   并且插入了一条记录  代码里查询这条记录 是OK的<3>在命令行里查询这条记录也是OK的 参见上面的截图<4>我以为在qt工程的编译目录下, 也会生成一个  datatest  这个数据库文件名  结果一看 什么也没有

不应该啊 (以我用sqlite的经验,这个目录下不用应该有一个datatest的文件吗?  mysql数据库文件去哪里了?)   参见命令行的最后一条截图 执行  show variables like ‘%datadir%‘;    找到了路径在

到此 使用mysql 完成了,注意 这里只是动态的 使用       还有静态编译QT程序呢? 静态编译中如何使用mysql  下一篇讲

原文地址:https://www.cnblogs.com/lifeng-blog/p/9162556.html

时间: 2024-08-01 21:43:31

QT中如何使用MYSQL 以及静态编译QT中如何加上MYSQL(2)的相关文章

Linux下快速静态编译Qt以及Qt动态/静态版本共存

Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-opensource-src的tar包,到网上一查,乖乖,大部分人编译这个包居然花费了12-13个小时!但是,根据我在Windows下静态编译Qt的经验,其实这之中很多东西都是可以不用编译的,最终我大约用了40分钟编译完成了全部内容.如果你直接使用官方的sdk安装,那么你就已经有了一个动态库,现在你又通过源

Linux下静态编译Qt程序

一般情况下,我们用Qt编译出来的程序是要依赖于系统Qt库的,也就是这个程序移到别的没有安装Qt库的系统上是不能使用的.会提示缺少……库文件之类的错误.这就是动态编译的结果. 但是如果我们想编译一个程序,这个程序在发给别人后,他们可以直接打开,而不需要特别地去先安装Qt库,那就需要采用静态编译了. 在Linux下如何静态编译Qt程序呢? 首先需要先安装静态编译的Qt,也就是静态编译Qt程序首先是需要一个静态编译安装的Qt   1.下载源安装程序,如 qt-x11-opensource-src-4.

Linux下静态编译Qt

Qt采用编译的方式安装的时候,配置中默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,所以在此介绍一下qt如何来进行静态编译 第一步:下载源码包 Qt/X11版本:qt-x11-opensource-src-x.x.x.tar.gz 第二步:解压缩 tar zxvf qt-x11-opensource-src-x.x.x.tar.gz 第三步:进入到刚才解压缩后的文件夹下并进行配置,如

静态编译 Qt 5.6

源码下载 Qt git地址:git://code.qt.io/qt/qt5.git 推荐用 SourceTree 客户端来克隆源码 准备工作 系统 Windows 7 或者 Windows 10 编译器 Visual Studio 2013 Update 5 或者 Visual Studio 2015 Update 1 安装ActivePerl 安装Python 静态编译ICU库 ICU库需要把Debug和Release版本都编出来 静态编译openssl 编译webkit需要的环境 Ruby

vs2013 静态编译Qt和配置方法

编译方法很简单,请看文章: http://wenku.baidu.com/view/6749dbab700abb68a982fba6 需要主要的是: 1:opengl 支持,如文章 2:opengl不支持,如下: configure -confirm-license -opensource -platform win32-msvc2013  -debug-and-release -static -prefix "E:\Qt\5.3.2-static-vs2013" -qt-sql-sq

如何在 静态编译的QT 5.5.1 中 使用数据库插件连接 ODBC(调用静态插件)

前段时间由于工作的关系,需要编写一个将数据插入到 Sql server 2012 的桌面软件. 由于之前使用的是MFC,偶然间接触到了Qt后,被它的简洁惊艳到了,于是便毅然而然的转投到了Qt的怀抱,哈哈…… 废话不多说,我使用的是最新的Qt 5.5.1版本(Qt 5.5.1 for Windows 32-bit MinGW), 在一路查看帮助文档后, 终于是把程序编译出来,正常运行了.正当我满心欢喜的交付出去的时候,遇到问题了,程序在对方的电脑上运行时, 提示缺少动态库!而且不同电脑缺少的库还不

亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查

记录下 QT Linux 静态编译遇到的坑

Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-opensource-src的tar包,到网上一查,乖乖,大部分人编译这个包居然花费了12-13个小时!但是,根据我在Windows下静态编译Qt的经验,其实这之中很多东西都是可以不用编译的,最终我大约用了40分钟编译完成了全部内容.如果你直接使用官方的sdk安装,那么你就已经有了一个动态库,现在你又通过源

QT全平台设置图标,全平台静态编译 good

1.  概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行.编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装文件. QT开发的程序发布的时候经常采用两种方式: l  静态编译,可生成单一的可执行文件. l  动态编译,需同时附上需要的dll文件. 2.  发布准备 不管采用哪种方式,首先我们要把项目的发布做一些准备,例如:准备程序的图标,将项目编译成release等.   2.1. 设置程序图标 应用程序