Qt를 사용하여 MySQL 서버 저장 프로 시저를 호출하려고합니다. 이 프로시 저는 검색하려는 여러 행의 데이터를 반환합니다.바인딩을 사용하여 서버 저장 프로 시저 호출
내가 시도한 첫 번째 조각은 잘 작동 :
QSqlQuery query("CALL GetOrderItems(323)", dataBase);
qDebug() << query.first();
는 또한 원하는 데이터를 반환하고 예상처럼 query.first()
는 사실이다.
그런 다음 Qt 설명서와 같은 매개 변수 바인딩을 사용하여 매개 변수를 삽입하려고했습니다. 나는 다음 스 니펫을 시도했다. 첫 번째는 두 번째 키워드 자리 표시자인 인덱스 자리 표시자를 사용합니다.
QSqlQuery query(dataBase);
qDebug() << query.prepare("CALL GetOrderItems(?)");
query.bindValue(0, 323);
qDebug() << query.exec();
qDebug() << query.first();
QSqlQuery query(dataBase);
qDebug() << query.prepare("CALL GetOrderItems(:myparam)");
query.bindValue(":myparam", 323);
qDebug() << query.exec();
qDebug() << query.first();
위의 두 쿼리 모두 정상적으로 실행됩니다. 그러나 query.first()
은 false를 반환하므로 결과를 얻는 방법을 모르겠습니다.
어떤 식 으로든 바인딩 쿼리의 결과를 얻을 수 있습니까? 왜이 기능이 작동하지 않습니까?
http://qt-project.org/doc/qt-4.8/sql-driver.html#qmysql - MySQL 드라이버/API의 제한 사항 인 것 같습니다. – Mat
링크 된 텍스트는 IN, OUT 및 INOUT 매개 변수를 나타냅니다. 하지만 나는 OUT 미터 또는 INOUT 파 미터를 사용하지 않습니다. 쿼리 결과 레코드를 검색하고 싶습니다. 대신 OUT 매개 변수를 사용하려고 시도하지 않았지만 연결된 텍스트가 맞으면 너무 실패합니다. – Silicomancer
당신은'IN' 매개 변수를 사용하고 있습니다, 그렇지 않습니까? – Mat