Ich arbeite an einem Projekt, wo der Benutzer einen Datensatz in eine SQLite-Datenbank einfügen kann. Die Abfrage wird kommen automatisch in dem folgende Verfahren erzeugt:C++ und SQLite - Wie führt man eine Abfrage aus, die durch Benutzereingaben gebildet wird?
string ID = "";
string title = "";
string password = "";
cout << "Insert ID:\n";
cin >> ID;
cout << "Insert title of password:\n";
cin >> title;
cout << "Insert password:\n";
cin >> password;
string sql = "INSERT INTO test (ID,title,password) VALUES(" + ID + "," + title + "," + password + ");";
Wenn ich versuche, das Programm i die Fehler zu kompilieren:
classes.h:74:76: error: invalid operands of types ‘const char*’ and ‘const char [2]’ to binary ‘operator+’
string sql = "INSERT INTO passwords (ID,title,password) VALUES (" + id + "," + title + "," + password
^
classes.h:78:42: error: invalid operands of types ‘int’ and ‘sqlite3_stmt*’ to binary ‘operator&’
sqlite3_prepare(db, sql.c_str(), -1 &st, NULL);
scheinen, dass er nicht mehr Charakter annehmen kann. Kann mir jemand zeigen, wie ich diesen Fehler beheben kann?
P.S. Ich bin neu in C++
Jede Hilfe wird geschätzt. Vielen Dank.
EDIT:
FULL CODE
sqlite3 *db;
sqlite3_stmt * st;
int id = 0;
string title = "";
string password = "";
cout << "Insert ID:\n";
cin >> id;
cout << "Insert title of password:\n";
cin >> title;
cout << "Insert password:\n";
cin >> password;
string sql = "INSERT INTO passwords (ID,title,password) VALUES (" + id + ',' + title + ',' + password + ");";
if(sqlite3_open("pw.db", &db) == SQLITE_OK)
{
sqlite3_prepare(db, sql.c_str(), -1 &st, NULL);
sqlite3_step(st);
}
else
{
cout << "Failed to connect\n";
}
sqlite3_finalize(st);
sqlite3_close(db);
Verwenden Sie nie rohe Benutzereingaben, um eine SQL-Abfrage zu bilden, es sei denn, Sie sollen zeigen, warum dies eine schlechte Idee ist. Es ist mir egal, ob es ein Spielzeugprojekt ist. – Yakk
Ja, es ist ein Projekt für den persönlichen Gebrauch. – CMz
'std :: to_string (id)' (unter der Annahme, dass der letzte Fehler in diesem Beitrag das * tatsächliche * Problem ist, wobei 'id' tatsächlich als 'int' deklariert ist). – WhozCraig