2014-07-17 3 views
0

Qt Creator로 Windows에서 실행되는 음악을 인식하는 응용 프로그램을 개발했습니다.Qt/MySQL 요청은 내 컴퓨터에서 작동하지만 다른 컴퓨터에서는 작동하지 않습니다.

이 앱의 모든 사용자가 재생 한 음악 표가 추가되었습니다.

테이블은 인터넷에서 호스팅되는 데이터베이스에 연결됩니다.

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)에 설치하면 테이블이 비어있어 음악이 추가되지 않습니다.

참고 : libmysql.dll을

qsqlmysqld.dll

qsqlmysql.dll

가에서 U 감사

Qt5Sql.dll : 나는 프로그램 폴더에 그 DLL을 추가 advance

+0

CONFIG + = CONSOLE을 사용하여 응용 프로그램을 컴파일하고 콘솔에서 시작하여 출력을보십시오. 또한 * d.dll로 끝나는 QT의 dll은 디버그 dll이므로 빌드 유형 (디버그 또는 릴리스)에 따라 필요한 dll로 배포하십시오. – niculare

+0

감사합니다. QSqlDatabase : QMYSQL 드라이버 또한, 나는 – AmirH

+0

가 좋아, 내가 폴더에 "sqldrivers을"qsqlmysql.dll 넣어 노력하고 .PRO 파일에 CONFIG + = 콘솔을 추가 qsqlmysqld.dll, 나는 콘솔에서이 메시지를 삭제합니다 로드되지 않았습니다 – AmirH

답변

0

해결 : (제가 5.3.1에서 실행의 문제를 추가하기 때문에) 는 appraently, 나는 5.2.1에서 Qt를하고 Qt5Sql.dll의 5.3.1 버전에서 qsqlmysql.dll 사용 그래서 2했다 5.2.1의 dll과 그것이 작동합니다!

0

sql 드라이버 dll은 응용 프로그램 폴더에 속합니다. sqldrivers는 자체 서브 디렉토리에 속합니다. 주석에 이미 언급했듯이 릴리스에는 debug (* d.dll) 라이브러리가 필요하지 않습니다.

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

감사합니다. 시도했지만 작동하지 않습니다. – AmirH

관련 문제