2017-03-02 3 views
0

Ich kann bestimmte Zeilen mit manuellen SQL-Abfrage Befehl löschen. Kann aber nicht von QLineEdit gelöscht werden. Wie bindet man mit QLineEdit?Wie lösche ich eine bestimmte Zeile aus der SQLite-Datenbank und binde sie mit qlineedit?

Hier ist mein Code:

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."); 
} 

Abfrage ausgeführt, aber nicht löschen. Was mache ich falsch?

+1

Versuchen Sie, die Klammer um ': person_name' wegzulassen. Vorbereitete Abfrage sollte dies für Sie tun –

+0

Auch müssen Sie die Abfrage vor dem Binden von Variablen vorbereiten. –

+0

Danke. Es klappt. –

Antwort

1

Die Syntax sieht nicht richtig aus und Sie rufen zweimal query->exec(). So sollten Sie die vorbereitete Anweisung ausführen:

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

Entschuldigung. Funktioniert nicht. Meine Abfrage ist richtig oder falsch? –

+0

Danke. Mein Fehler. Es funktioniert und versteht. Danke noch einmal. –

Verwandte Themen