Erstellen einer sqlite3-Tabelle in c++
Ich experimentiere mit C++, nachdem ich vor kurzem umgezogen von python; derzeit schreiben einer Funktion, die erstellt eine Tabelle in eine sqlite3-Datenbank.
Scheine ich zu werden, schlagen einige newbie-Fehler:
int db_build()
{
sqlite3 *db;
int rc; //This line
int sql; //This line
rc = sqlite3_open("test.db", &db);
/* Create SQL statement */
sql = "CREATE TABLE WORDS(" \
"ID INT PRIMARY KEY NOT NULL," \
"CURRENT_WORD TEXT NOT NULL," \
"BEFORE_WORD TEXT NOT NULL," \
"AFTER_WORD TEXT NOT NULL," \
"OCCURANCES INT NOT NULL);";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql);
sqlite3_close(db);
return 0;
}
Mein terminal, gibt Sie Folgendes zurück:
akf@akf-v5 ~/c/HelloWorld $ g++ main.cpp -l sqlite3
main.cpp: In function ‘int db_build()’:
main.cpp:30:8: error: invalid conversion from ‘const char*’ to ‘int’ [-fpermissive]
sql = "CREATE TABLE WORDS(" \
^
main.cpp:38:29: error: invalid conversion from ‘int’ to ‘const char*’ [-fpermissive]
rc = sqlite3_exec(db, sql);
^
main.cpp:38:29: error: too few arguments to function ‘int sqlite3_exec(sqlite3*, const char*, int (*)(void*, int, char**, char**), void*, char**)’
In file included from main.cpp:4:0:
/usr/include/sqlite3.h:379:16: note: declared here
SQLITE_API int sqlite3_exec(
^
Wenn ich "int sql' in 'char sql', schlug ich sogar noch mehr Fehler. Irgendeine Idee, wie man das Ding jetzt?
- Erklären Sie, was Sie hier versuchen:
sql = "CREATE TABLE WORDS("
. Nun, was auch immer die Erklärung, die Sie haben, wie kann ein string sein, eineint
? - Vielen Dank für die Abfrage @PaulMcKenzie, 1. Ich versuche zu erstellen, die eine SQL-string-Befehl. 2. Ich habe auch versucht, dass mit char-und string, die beide entstehen neue Fehler. Ich interpretierte "uninitialized const" INT " wird die gewünschte variable, type-Deklaration - nicht sicher, wie ich kam zu diesem Schluss, es war einer von denen, spontane Dinge, haha
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen syntax Fehler. Loswerden der nachfolgende
\
- Und einer python-y-Fehler. Ändern
int sql;
zu:Art
const char*
(Häufig gelesen als "Zeiger auf const char") ist geeignet für den Hinweis auf string-Literale.Edit:
Für die Vollständigkeit, Hot Licks auch Hinweise, dass Ihr Aufruf
sqlite3_exec
werden müssen:Wenn du gehst, um code in C++ solltest du besser sehr schnell lernen, was ein Zeiger ist, und was ein "C-string" ist.
sqlite3_exec
erwartet einen C-string als zweites argument übergeben wird, die eine Sequenz von 8-bit -char
Werte beendet mit einem byte aus Nullen. Es bestanden über einen Zeiger auf char --char *
.So Ihre Erklärung muss
char * sql;
.Auch, wenn man sich die Dokumentation Sie werden sehen, dass
sqlite3_exec
hat mehrere Parameter -- Sie können nicht ausgelassen werden (wenn Sie können übergeben werden, wieNULL
).