• 6909阅读
  • 6回复

[提问]qt连接mysql,驱动已经编好,但依旧连不上数据库。 [复制链接]

上一主题 下一主题
离线sn2ov
 
只看楼主 倒序阅读 楼主  发表于: 2013-05-24
环境:win8,mysql5.0,Qt4.8.4
已经把编好的四个文件,放进4.8.4/plugins/sqldrivers中,但依旧出现下面的错误。。。

E:\Qt Project\mysqltest-build-Qt_4_8_4_4_8_4-Debug\debug\mysqltest.exe 启动中...
Init CriticalSection spin count CDLPShareMemConfig::Close()CDLPShareMemConfig::Close()TSWebDownLoadProtect.dll is Load failedTSWebMon.dat is Load failednot open
Delete CriticalSection spin count E:\Qt Project\mysqltest-build-Qt_4_8_4_4_8_4-Debug\debug\mysqltest.exe 退出,退出代码: 0

没有遇到过这个问题的。。

离线lpdpzc

只看该作者 1楼 发表于: 2013-05-24
最好把你的代码贴上来,看看
离线sn2ov
只看该作者 2楼 发表于: 2013-05-25
回 1楼(lpdpzc) 的帖子
用的是网上别人发的测试连通性的代码
mysqtest.pro

#-------------------------------------------------
#
# Project created by QtCreator 2011-10-24T17:15:14
#
#-------------------------------------------------

QT       += core gui
QT       += sql
TARGET = mysqltest
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

main.cpp


#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtSql>
#include <QSqlQuery>
#include <QSqlDatabase>
#include <QMessageBox>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSqlDatabase *db = new QSqlDatabase(QSqlDatabase::addDatabase("QMYSQL"));
    db->setHostName("192.168.1.133");
    db->setDatabaseName("hello");
    db->setUserName("root");
    db->setPassword("root");
    if(!db->open())
    {
        qDebug()<<"not open";
        QMessageBox::information(NULL,"show","not open!");
        return 0;
    }
    else
    {
       qDebug()<<"open seccess";
       QMessageBox::information(NULL,"show","open seccess!");
    }
    QSqlQuery queryBill;
    queryBill.exec("select * from bills");
    while(queryBill.next())
    {
    qDebug()<<"get test="<<queryBill.value(queryBill.record().indexOf("TEST")).toString();
     }
    QString DBname = db->connectionName();
    //db->close();
    if(db!=NULL)
    {
        delete db;
        db=NULL;
    }
    QSqlDatabase::removeDatabase(DBname);
//    MainWindow w;
//    w.show();

    return a.exec();
}


mainwindow.cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
离线lzh1104

只看该作者 3楼 发表于: 2013-10-28
我的也是连不上====
  1. QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql数据库驱动
  2. db.setHostName("localhost");
  3. db.setDatabaseName("demo_java"); // 我们之前建立的数据库
  4. db.setUserName("root"); // 我们创建的 yunfan 用户名
  5. db.setPassword("root"); // yunfan 用户的密码
  6. bool ok = db.open(); // 尝试连接数据库
  7. if(ok){ // 这里用yunfan已经成功连上数据库
  8.       
  9. } else { // 打开数据库失败,显示数据库返回的失败描述
  10.    ui->display->append("cannot open database.");
  11.    ui->display->append("Reason: " + db.lastError().databaseText());
  12. }


离线eykimiao

只看该作者 4楼 发表于: 2014-01-02
回 3楼(lzh1104) 的帖子
在自己QT工程的目标程序目录下建立文件夹sqldrivers,并将这4个驱动文件放进去。(本人所存放路径D:\DEMO\debug\sqldrivers\,供大家参考,注意:文件夹名字一定要是sqldrivers)
离线chinagll

只看该作者 5楼 发表于: 2014-01-03
还需要把MySQL的一个DLL文件拷到Qt的Bin目录。
离线flashman2002

只看该作者 6楼 发表于: 2014-01-04
准确的说是把MySQL中的lib/libmysql.dll拷贝到QT的bin目录下。
快速回复
限100 字节
 
上一个 下一个