当前位置:编程学习 > wap >>

QT程序用mysql在其他主机插入数据库,本机必须要安装mysql程序么?

qt mysql出现的:无法加载驱动问题

今天编辑了一个包含了mysql的QT小程序,我加载了mysql的所有dll 在本机上也能运行(本机安装了mysql)
但是到别的主机上一运行(别的主机没有安装mysql,但是我加载了mysql的dll) 还是提示无法加载驱动。是不是一定要在别的主机上也要安装mysql程序啊。?
--------------------编程问答-------------------- 不需要安装吧,检查下dll版本,debug or release? --------------------编程问答-------------------- --------------------编程问答-------------------- release 下面的exe程序 --------------------编程问答-------------------- 我用的是QT 4.3.5  --------------------编程问答--------------------
引用 1 楼 jasonyak 的回复:
不需要安装吧,检查下dll版本,debug or release?



我现在就需要发布到其他机器,结果一直提示加载不到驱动,请问:这个问题该如何解决?
我现在已经在exe可执行文件同目录下建了plugins\sqldrivers这样一个二级目录,并将qsqlmysql4.dll放入其中。 并把要用的 dll 文件 拷到exe目录下了(mingwm10.dll,QtGui4.dll,QtCore4.dll,QtNetwork4.dll,QtSql4.dll,libmySQL.dll)

该怎么办啊 --------------------编程问答-------------------- 有一个方法可以试一下:用Depends工具看看你的exe到底调用了哪些DLL,看看在打包部署时是不是有漏掉的

Depends工具下载地址 --------------------编程问答--------------------
引用 6 楼 heeeey 的回复:
有一个方法可以试一下:用Depends工具看看你的exe到底调用了哪些DLL,看看在打包部署时是不是有漏掉的

Depends工具下载地址


我现在能连接上数据库了  但是
为什么我的QT程序在执行
 会出现读到空的内存的情况呢  
错误提示如下:
“0x6a316187”指令引用的“0x00000000”内存。该内存不能“read”

这样的错误的呢

#include<QApplication>
#include<QtSql/QSqlDatabase>
#include<QtSql/QSqlQuery>
#include<QTextEdit>
#include<QtCore/QDateTime>
#include<QtSql/QSqlDriver>
#include<QString>
#include<QDebug.h>
#include<QTextCodec>
#include<QSqlError>
#include<QDir>
int main(int argc, char **argv)
{
  QApplication app(argc, argv);
 
  QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql数据库驱动
  db.setHostName("172.22.142.81");
  db.setDatabaseName("p2p"); // 我们之前建立的数据库
  db.setUserName("root"); // 我们创建的 yunfan 用户名
  db.setPassword("123"); // yunfan 用户的密码
  bool ok = db.open(); // 尝试连接数据库
  qDebug()<<ok<<endl;
  if(ok)
    { 
   qDebug()<<"open database."<<endl;

    QString strsql=QString("SELECT * FROM progress");

qDebug()<<strsql<<endl;  
QSqlQuery query; 
qDebug()<<"3"<<endl;

if(query.exec(strsql))
{
qDebug()<<"yes the number get in!"<<endl;
}
else 
   { 
    qDebug()<<"no the number is wrong!"<<endl;
    qDebug()<<query.lastError ().text()<<endl;
    }
    qDebug()<<"4"<<endl;
db.close();

 }  
else
   { // 打开数据库失败,显示数据库失败
 
}

return app.exec();
}

这个是我程序的代码
--------------------编程问答--------------------
引用 7 楼 dreammybaby 的回复:
我现在能连接上数据库了  但是
为什么我的QT程序在执行
 会出现读到空的内存的情况呢  
错误提示如下:
“0x6a316187”指令引用的“0x00000000”内存。该内存不能“read……


-----“0x6a316187”指令引用的“0x00000000”内存。该内存不能“read” 
应该是程序里那个对象使用时为空造成的,你单步调试一下,先看看是哪条语句的问题。 --------------------编程问答--------------------
引用 8 楼 heeeey 的回复:
引用 7 楼 dreammybaby 的回复:
我现在能连接上数据库了  但是
为什么我的QT程序在执行
会出现读到空的内存的情况呢
错误提示如下:
“0x6a316187”指令引用的“0x00000000”内存。该内存不能“read……


-----“0x6a316187”指令引用的“0x00000000”内存。该内存不能“read” 
应该是程序里那个对象使用时为空造成的……



这个怎么单步调试啊 我不是用VC写的 用什么工具能单步调试的 --------------------编程问答--------------------
引用 6 楼  的回复:
有一个方法可以试一下:用Depends工具看看你的exe到底调用了哪些DLL,看看在打包部署时是不是有漏掉的

Depends工具下载地址
请问,怎样将QMYSQL编译为release版本的呢? --------------------编程问答--------------------
引用 5 楼  的回复:
引用 1 楼 jasonyak 的回复:

我现在已经在exe可执行文件同目录下建了plugins\sqldrivers这样一个二级目录,并将qsqlmysql4.dll放入其中。 并把要用的 dll 文件 拷到exe目录下了(m……
你只需要在exe可执行文件同目录下建个sqldrivers目录就好了,然后将libqsqlmysql4.a、libqsqlmysqld4.a、qsqlmysql4.dll、qsqlmysqld4.dll拷贝进去就Ok啦!
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,