Qt / MySQL请求在我的计算机上运行,​​但在其他计算机上运行

时间:2014-07-17 22:00:45

标签: mysql qt dll

我在Qt Creator下的Windows上开发了一个应用程序,用于识别计算机播放的音乐。

我添加了此应用的所有用户播放的音乐表。

该表链接到互联网上托管的数据库。

我使用此请求获取所有音乐并填写表格:

void DataTable::refreshData(){
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("mysql1.alwaysdata.com");
    db.setDatabaseName("mymusicrecognition_mmr");
    db.setUserName("user");
    db.setPassword("pass");
    db.open();
    QSqlQuery query("SELECT * FROM mmr ORDER BY id DESC");
    int i = 0;
    while (query.next() && i<500) {
        QString music = query.value(1).toString();
        QString album = query.value(2).toString();
        QString time = query.value(3).toString();
        QString date = query.value(4).toString();
        item(i,0)->setText(music);
        item(i,1)->setText(album);
        item(i,2)->setText(time);
        item(i,3)->setText(date);
        i++;
    }
    db.close();

}

此请求添加用户计算机识别的最后一首音乐:

void DataTable::addRowInData(QString artist, QString title,QString album){
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("mysql1.alwaysdata.com");
    db.setDatabaseName("mymusicrecognition_mmr");
    db.setUserName("user");
    db.setPassword("pass");
    db.open();
    QSqlQuery query;
    query.exec(QString("INSERT INTO mmr VALUES (NULL,'%1','%2','%3','%4')")
    .arg(artist+" - "+title).arg(album).arg(QTime::currentTime().toString("H:mm:ss")).arg(QDate::currentDate().toString("d.MM.yyyy")));
    db.close();

}

问题是,当我在我的计算机上安装应用程序时,所有请求都有效,但当我将其安装在另一台计算机(和另一台IP)上时,该表为空并且未添加任何音乐。

注意:我在程序文件夹中添加了这些dll:

Qt5Sql.dll

qsqlmysqld.dll

qsqlmysql.dll

的libmysql.dll

提前感谢你

2 个答案:

答案 0 :(得分:0)

sql-driver dll不属于应用程序文件夹。 sqldrivers属于自己的子目录。正如评论中所述,发布时不需要debug(* d.dll)库。

ApplicationFolder\sqldrivers\qsqlmysql.dll
ApplicationFolder\Qt5Sql.dll
ApplicationFolder\libmysql.dll

答案 1 :(得分:0)

已解决: 显然,我使用了Q.1的5.3.1版本的qsqlmysql.dll和5.2.1的Qt5Sql.dll(因为我在5.3.1中添加了执行问题)所以我从5.2.1中获取了2个dll并且它可以工作!!