2017-12-14 5 views
-1

여기 내 코드, 그것은 버튼을 클릭에 충돌 :선택한 행의 첫 번째 열 값을 변수에 바인딩하고 QT의 SQL 명령에 사용하는 방법은 무엇입니까?

QSqlQueryModel*Acceuil::consulter_evenements() 
{ 

QSqlDatabase bd= QSqlDatabase::database(); 

QSqlQueryModel * model=new QSqlQueryModel(); 

model->setQuery("SELECT E.* FROM EVENEMENT AS E JOIN CATALOGUES_EVENEMENTS as CE JOIN CATALOGUES as C ON C.ID_Catalogue = CE.ID_Catalogue AND E.ID=CE.ID_Evenement AND C.ID_Catalogue='"+ui->listeCatalogues->selectionModel()->selectedRows(0).at(0).data(Qt::DisplayRole).toString()+"' GROUP BY ID_Catalogue"); 

return model; 
} 
내가 UI-> listeCatalogues-> selectionModel의() "바인딩 시도

-> selectedRows (0) .at (0) .DATA (Qt는 :: DisplayString) .toString() "을 QString에 추가했지만 충돌이 발생했습니다.

"SELECT * FROM EVENEMENT"와 같은 간단한 쿼리로 쿼리를 바꾸는 것도 효과가 없었습니다.

+0

네가 중첩 된 많은 호출 중 어떤 것이 충돌하는지 알아야합니다. 콘솔의 오류 메시지는 무엇입니까? 디버거에서 실행 해보십시오. 행이 선택되지 않았을 수 있습니다. – ta55e

+0

오류 메시지없이 그냥 충돌합니다. 그러나 단추를 테스트하려고했기 때문에 선택된 행이 없을 수 있습니다. –

답변

0

model-> setQuery (...)을 사용할 때 QSqlQuery를 인수로 사용해야합니다. QSqlQuery 개체를 만듭니다. QSqlQuery :: bindValue 또는 이와 유사한 방법으로 쿼리 할 모든 값을 바인딩하십시오. 그 후에 만 ​​모델 -> setQuery (queryWithMybindedValues)