2017-01-11 1 views
0

Ich versuche, eine Zeile in einer Tabelle in einer SQLite-Datenbank mit C++ zu aktualisieren, aber ich möchte es relativ zu seinem aktuellen Wert aktualisieren.Wie kann ich C++ verwenden, um eine SQLite-Zeile relativ zu ihrem ursprünglichen Wert zu aktualisieren?

Das ist, was ich bisher versucht habe:

int val=argv[2]; 
string bal = "UPDATE accounts SET balance = balance + " + argv[1] + "WHERE account_id = " + bal + argv[2]; 


if (sqlite3_open("bank.db", &db) == SQLITE_OK) 
{ 
    sqlite3_prepare(db, balance.c_str(), -1, &stmt, NULL);//preparing the statement 
    sqlite3_step(stmt);//executing the statement 
} 

So dass der erste Parameter die account_id ist, und der zweite Parameter das aktuelle Guthaben ist. Dies funktioniert jedoch nicht. Was kann ich tun, damit die Datenbank erfolgreich aktualisiert wird?

Vielen Dank!

EDIT: Sorry für die Verwirrung. Die Hauptsituation ist eine Tabelle mit vielen Einträgen mit jeweils einer eindeutigen Konto-ID. Zum Beispiel hat man eine ID von 1 mit einem Saldo von 5.

Wenn ich dieses Programm mit den Parametern "1 5" ausführen, sollte die Balance jetzt 10 sein. Wenn ich es wieder mit "1 7" ausführen, es sollte 17 sein.

+0

I scheint, dass Ihre Frage vollständig in 'SQL' Feld gelöst werden kann, aber bitte erklären deutlicher welches Ergebnis werden Sie versuchen, – SergeyLebedev

+0

zu bekommen Haben Sie meinen Sie so etwas wie" tun wollen UPDATE Konten SET Balance = Balance + 100 WHERE account_id = 42 "? –

+0

Aktualisiert! @SergeyLebedev –

Antwort

0

Sie können den Operator + nicht verwenden, um C-artige Zeichenfolgen und Zeichenfolgenliterale zu verketten. Ein quick and dirty fix:

string bal = string("UPDATE accounts SET balance = balance + ") + argv[1] + string(" WHERE account_id = ") + argv[2]; 
+0

Sie sollten auch den Speicherplatz angeben, den Sie vor 'WHERE' hinzugefügt haben. – Barmar

+0

@Barmar Ich habe einige andere Änderungen vorgenommen. Ich hatte nicht vor, dass dies mit dem OP-Code identisch wäre. Außerdem wird es als unhöflich angesehen, den Leuten zu sagen, was sie "tun sollten", besser heißt "Sie könnten haben". –

Verwandte Themen