2013-03-22 3 views
0

QT 프레임 워크로 쿼리를 연결하고 실행하려고하면 mysql db에 연결할 수 있으며 쿼리를 테스트하고 데이터베이스에서 작동하는지 확인했습니다. 내가 연결할 수 있으며, 그것이 내가 또한 내가 노력하고QT로 mysql 쿼리를 실행할 수 없습니다

을 작동하는 것 같다

data.exec("insert query here"); 
data.next(); 

아무것도 시도

void Login::on_loginButton_clicked() 
{ 
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 
    db.setHostName("127.0.0.1"); 
    db.setDatabaseName("TestBase"); 
    db.setUserName("username"); 
    db.setPassword("password"); 
    if (!db.open()) { 
    QMessageBox::critical(0,"Database Error","Could not connect to the database, check your internet connection."); 
    } 


QSqlQuery data("SELECT * FROM `TestBase`.`Users` WHERE `userName` = 'Afonso'"); 
//data.exec("SELECT * FROM `TestBase`.`Users` WHERE `userName` = 'Afonso'"); 
QMessageBox::information(NULL, "Query executed", "The query returned: " + data.exec()); 
} 

오류가 발생하지 않기 때문에 MySQL의 드라이버가 제대로 설치되어 생각 쿼리 결과를 QMessageBox에 표시하기 위해

+0

'QSqlQuery'는 sql 쿼리를 실행하기 위해 생성자 인수를 sql 쿼리로 사용하지 않으며, 최신 오류를 보려면'lastError(). text()'를 사용하십시오. – SIFE

+0

빈을 반환합니다.이 코드를 사용하려고했습니다. "QMessageBox :: information (NULL,"Query executed ","querry returned : "+ data.lastError(). text()); 'data.prepare ("여기에 검색어를 삽입하십시오"); data.exec(); data.first(); QString result = data.value (0) .toString()' 그리고 그 결과 var is = 0 – INdek

+0

또한 qDebug() << data.lastError();를 실행하려고 시도하고 QSqlError 1, "", ""), 내 google-fu에 의해 질의가 올바르게 실행되었다는 것입니다. – INdek

답변

0
QSqlQuery query(db); 
query.prepare("SELECT * FROM `TestBase`.`Users` WHERE `userName` = :user_name"); 
query.bindValue(":user_name", "Afonso"); 
if (!query.exec()) 
{ 
    qDebug() << query.lastError().text(); 
    retrun; 
} 
while (query.next()) 
{ 
    QVariant v = query.value(0); 
} 
+0

코드 감사했습니다! – INdek

-1

나는 pyqt를 사용하지만 일반적으로 select 쿼리를 사용하여 pyqt에서 .exec() .exec_()가 아닌 .first() 데이터를 얻습니다. 그 다음에() 잘 작동합니다.

+1

OP의 질문에서 문제를 해결하지 않았습니다. 코드가 작동해도 코드가 표시되지 않을 수 있지만 OP 코드가 작동하지 않는 이유는 무엇입니까? – Sphinx

관련 문제