2017-03-02 8 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()を2回呼び出します。これは、準備された文を実行する方法です。

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

ありがとうございます。私の間違い。それは動作し、理解する。再度、感謝します。 –

関連する問題