Qt编译mysql以及创建表后进行导入操作
鉴于很多同学对Qt编译myql总是不能成功。出现各种问题,今天特此写出本教程,希望可以帮到须要的同学。
       首先,须要明确编译的目的和原理。
目的:Qt 5.2版本号曾经都是不带mysql驱动的。所以须要进行编译mysql数据库驱动,仅仅有编译完毕后才干被Qt载入上。假设你安装的是Qt5.2以后版本号的,那就不须要了,由于在后来的版本号中,Qt官方添加这一模块。
能够在Qt的安装插件文件夹下查看自己的驱动是否已经存在。
比如我的在文件夹:
C:\Qt\4.8.2\plugins\sqldrivers。能够看到当前的数据库驱动
一般须要两个即可了。
原理:先看命令:qmake "INCLUDEPATH+=C:\mysql\include" "LIBS+=C:\mysql\lib\libmysql.lib" mysql.pro
解释:qmake---是Qt中国的一种编译命令,在linux下编程时常常会用到make命令。详情能够百度;INCLUDEPATH----后面的路径是数据库中"include"和"lib"的文件夹。
为什么要将这两个文件复制一份考到其它盘?那是由于mysql在安装的时候默认安装路径中有空格,这在编译过程中是无法通过的,不信的同学能够试一下,不行的话在考到其它盘里面;最后面的mysql.pro---这个是Qt的project文件,每一个Qtproject建立后都会生成一个以.pro结尾的文件,以后打开Qtproject的时候就双击你要打开的.pro结尾的哪个文件。整个project就打开了。
可能我上面的解释也没有解释清楚大概就是哪个意思。
以下说说详细的过程:
细心的同学就会发现,qmake.自己编译时会出现这个问题:
'qmake' 不是内部或外部命令,也不是可执行的程序或批处理文件
原因:没有给Qt配置环境变量
解决的方法:找到Qt的安装文件夹,我的文件夹在这儿:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
找到这个文件夹下的这个东西,看见了吧qmake
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
找不到的话能够这样做:单击桌面Qt程序右键,打开文件路径:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
右击打开我的电脑----点击属性---高级系统设置-----环境变量----找到path项---编辑
 
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="317" width="303" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
至此,其它的几个文件夹页这样配置。在此就不再反复了。
当然最简单最直接的是,不用配置。
直接用Qt自带的command进行编译。打开開始菜单,找到Qt comman窗口。
比方我的是这个:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">   
进入到Qt的源代码文件夹下的插件文件夹--驱动文件夹---数据库文件夹。注意这个编译的是源代码。然后输入開始介绍的哪一行文件夹---按回车。
之后非常多同学都说没有反应,那就对了,这一步的目的是为了下一步编译做准备,会生成makefile文件。
由于用的是mingw编译器,所以用mingw32-make命令编译,假设你用的是vs的,那就用nmake编译。
直接输入命令mingw32-make----回车。
假设没有错误。这个过程大概须要几十秒钟。接着进行安装:输入命令:mingw32-make install.能够将生成的插件考入相应Qt的文件夹。
你能够查看下驱动文件夹师是否存在qsqlmysql.dll和libqsqlmysql4.a这两个文件,一般编译成功后就会有的。
此时编敲代码会发现,还是没有发现mysql驱动。
缺少引导文件。在考一个文件
就是之前你复制的那两个文件。在lib下有个libmysql.dll文件
将其拷贝到Qt的启动文件夹。跟前面打开方法一样,在桌面鼠标右击Qt的图标,打开文件位置,然后粘贴进去进行。
至此。mysql编译任务完毕。
那怎么知道自己的配置是否成功了呢,最简单的就是写个简单的程序检測下。
建立一个QtGui Qpplicationproject。注意包括sql模块(假设没有包括,建完project后能够自project中加入,不用操心)。一下是一个简单的測试程序:
须要加入的头文件:#include
<QSqlDatabase>  
#include <QDebug>
    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug() << "\t "<< driver;
    qDebug() << "End";
把上面的程序写到main函数中就可以。
若是配置成功,则在窗体以下会输出一下信息:
看见上面的QMYSQL了吧,说明已经检測到了mysql数据库驱动了。如今能够进行后面的操作了。
首先,为了进行连接数据库。必须创建数据库和数据表,怎么创建呢?这个原理还和大家熟知的sqlserver一样,仅仅只是,略微有点差别,可能是命令大家还不熟悉,随意新建一个文本文件,进行编辑:利用sql语句进行创建表,就创建一个简单的学生表吧。
输入一下sql语句:
注意输入完毕后保存文件。文件的后缀是.sql !!!
。。
下一步是关键的时候,进行导入数据表。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
依照上面的命令:show databses;---回车。就可以看见当前的数据库名称。接下来创建数据库--这和我们在sqlserver中学的一样。
create databses mydatabse;
运行导入命令。将之前写好的创建数据表导入数据库中---
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
此次,完毕了主要的任务,在这里仅仅是创建了简单的一张表,能够依据你的须要自行创建数据表。
注:在运行source命令之前不许使用数据库。也就是说,你必须指定你要为哪个数据库导入表。
完毕后,相同的方法,插入数据,也是在一个网文本文件里写好插入数据命令,然后运行导入命令.
以上步骤完毕后。可以进行一个简单的连接数据库測试,检測是否可以连接上。
#include <QApplication>
#include "widget.h"
#include <QMessageBox>
#include <QSqlError>
#include <QTextCodec> bool creatconnect()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("student");
db.setUserName("root");
db.setPassword("123456"); bool ok = db.open();//建立数据库连接 if(!ok)
{
QMessageBox::critical(0,QObject::tr("连接数据库失败! ! ! "),db.lastError().text());
return false;
}
else
{
QMessageBox::information(0,QObject::tr("Tips"),QObject::tr("连接数据库成功。。! ")); return true;
} } int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec *codec = QTextCodec::codecForName("GB2312"); QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec); if(!creatconnect())
{
return 1;
} Widget w;
w.show();
return a.exec();
}
点击Run(执行)能够看见:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">     
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcwNDMzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
能够看见查询的数据。
至此,全部简单的编译測试工作已经完毕了。
小伙伴们,快去试试你们的Qt和mysql吧。
測试project文件我已经上传了,大家能够下载源代码。
http://download.csdn.net/detail/u013704336/8278693
以上内容。纯属个人理解,若有不论什么问题,欢迎大家指出,共同学习。(creaazylq@163.com)
Qt编译mysql以及创建表后进行导入操作的更多相关文章
- MYSQL定时创建表分区
		
MYSQL定时创建表分区 一.存储过程-表分区-----------------------------------------------------------------需求: 每月创建一个分区 ...
 - mysql 在创建表或者插入时遇到关键字报错
		
mysql 在创建表或者插入时遇到关键字:比如name,status等.都不报错 解决方法:在字段上加上` 上面这个符号是键盘ecs下面那个符号
 - MySql数据库创建表
		
3.3.MySql数据库创建表 创建5个表: UserInfo用户基础表 Role 角色表 MenuInfo 菜单即控制表 Relation_Role_Menu 角色对应菜单关系表 RelaTion_ ...
 - QT编译Mysql驱动问题及解决方案
		
默认情况下,qt 并没有自带mysql的数据库插件,需要自己编译先安装mysql server ,运行setup.exe时选择自定义安装,安装目录设为"D:\mysqldev"不要 ...
 - Window下 Qt 编译MySQL驱动(居然用到了动态库格式转换工具)
		
一步步在Window下开发Qt 今天开始安装MySQL,看了些关于MySQL安装的博文,方法大致相同,但是遇到的细节问题各有不同,或者没有讲全面,下面来说说个人的安装过程及遇到的问题. 1.首先下载, ...
 - 为什么MySQL分库分表后总存储大小变大了?
		
1.背景 在完成一个分表项目后,发现分表的数据迁移后,新库所需的存储容量远大于原本两张表的大小.在做了一番查询了解后,完成了优化. 回过头来,需要进一步了解下为什么会出现这样的情况. 与标题的问题的类 ...
 - mysql中,创建表的时候指定if not exists参数的作用?
		
需求说明: 在创建表的时候,如果指定if not exists语句,有什么作用,在此做个实验,并且官方手册, 理解下这个参数的作用. 操作过程: 1.创建测试表test01 mysql> cre ...
 - Myecilpse web +tomcat 项目: JSP在mysql中创建表
		
<%@ page language="java" import="java.util.*" import="com.mysql.jdbc.Dri ...
 - shell mysql 直接创建表
		
shell 直接创建表 #!/bin/bash mysql -hdatabases -uroot -p^xxxxasdasdadd <<EOF Create Database If Not ...
 
随机推荐
- 为什么maven 创建web工程不自动生成Deployment Descriptor:工程名
			
上面图切换成下面图: 点击eclipse右上角,如下图红圈,然后在选择javaEE这样就切换成javaEE视图了 如果还是不能解决,相信这个链接对你有所帮助:https://www.cnblogs.c ...
 - SPA SEO SSR三者有什么区别
			
SPA通俗的说就是单页面应用(single page application) 优点 页面之间的切换非常快 一定程度减少了后端服务器的压力 后端程序只需要提供api,不需要客户端到底是web端还是手机 ...
 - String值传递剖析
			
转载自 http://www.iteye.com/topic/412531 提要:本文从实现原理的角度上阐述和剖析了:在Java语言中,以String作为类型的变量在作为方法参数时所表现出的“非对象” ...
 - NuSOAP简介 php中使用webservice
			
许多机构已经采用了Apach和PHP作为他们的Web应用环境.在Web services模式中采用PHP可能看上去可能会比较难.但是事实上,搭配NuSoap,你可以轻松的应用PHP构建SOAP的客户端 ...
 - linux在线添加硬盘、扫盘
			
1:查看scsi 硬盘设备[root@web02 ~]# ls /sys/class/scsi_host host0 host1 host2 2:检查本机现有硬盘 [root@web02 ~]# fd ...
 - Bedrock Linux 0.7.3 发布
			
Bedrock Linux是一种元分发,允许用户利用其他通常互斥的Linux发行版的功能,并让它们无缝地一起工作.该项目发布了其0.7.x系列,Bedrock Linux 0.7.3的更新. 新的更新 ...
 - 2015 Multi-University Training Contest 1 y sequence
			
Y sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
 - Openstack API 开发 快速入门
			
Openstack 做为流行的开源云计算平台,其最大特性是利用其提供的基础设施API,让我们可以以软件的方式来动态管理IAAS资源.Openstack 提供的api是流行的Rest API. ...
 - solr环境搭建&基本使用
			
分步指南 solr服务与tomcat整合 solr使用配置步骤 solr使用 推荐分词工具 相关的文章 一.Solr服务与tomcat整合 1.solr相关版本下载路径:http://archive. ...
 - 洛谷 P2758 编辑距离
			
P2758 编辑距离 题目描述 设A和B是两个字符串.我们要用最少的字符操作次数,将字符串A转换为字符串B.这里所说的字符操作共有三种: 1.删除一个字符: 2.插入一个字符: 3.将一个字符改为另一 ...