我在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
提前感谢你
答案 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并且它可以工作!!