2017-03-02 5 views
0

수동 SQL 쿼리 명령을 사용하여 특정 행을 삭제할 수 있습니다. 그러나 QLineEdit에서 삭제할 수 없습니다. QLineEdit으로 바인딩하는 방법? 실행하지만 삭제하지sqlite 데이터베이스에서 특정 행을 삭제하고 qlineedit로 바인드하는 방법은 무엇입니까?

person_name = ui->txt_UserName->text(); 
mobile_number = ui->txt_Pass->text(); 

//delete values 
QString deleteStatement = "DELETE FROM phonebook_info WHERE user_name = ':person_name'"; 
query->bindValue (":person_name", person_name); 

query->exec (deleteStatement); 

if(query->exec()){ 
    QMessageBox::information (this, "Information!", "Row Deleted.", QMessageBox::Ok); 
    ui->statusBar->showMessage ("Row Deleted."); 
} else { 
    QMessageBox::critical (this, "Information!", "Row not Deleted.", QMessageBox::Ok); 
    ui->statusBar->showMessage ("Row not Deleted."); 
} 

쿼리

여기 내 코드입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+1

': person_name'을 괄호로 묶지 마십시오. 준비된 쿼리는 이것을 수행해야합니다 –

+0

또한 변수를 바인딩하기 전에 쿼리를 준비해야합니다. –

+0

고맙습니다. 그것은 작동합니다. –

답변

1

구문이 올바르게 표시되지 않고 query->exec()을 두 번 호출합니다. 다음과 같이 준비된 문장을 실행해야합니다 :

QSqlQuery query = new QSqlQuery(databaseInstance); 
bool ok = query->prepare(deleteStatement); 
if (!ok) { 
    qWarning() << "SQL error:" << deleteStatement; 
} 
query->bindValue(":person_name", person_name); 
query->exec(); 
+0

죄송합니다. 작동하지 않습니다. 내 쿼리 문이 맞다가 잘못 되었습니까? –

+0

감사합니다. 내 실수. 그것은 일하고 이해합니다. 다시 한번 감사드립니다. –