SQlite Tabellennamen anzeigen (geloest)
-
Hallo,
mit welchem Kommando kann ich die Daten von einer SQLite-Datenbank mit den Tabellennamen (Tabellenkopf) anzeigen ?
Mit dem Kommando:char *query = "SELECT * FROM ARTIKEL";
werden nur die Daten angezeigt.
Bei diesem Kommando:
char *query = "SHOW TABLES FROM ARTIKEL";
passiert nichts.
MfG
Juergen B.
-
Google mal nach der Tabelle "sqlite_master". Da müssten solche Infos gespeichert sein.
-
Da wir hier ja im C++-Forum sind (und deine eigentliche Frage beantwortet ist), noch der Hinweis, dass es const char * query = ... heißen muss.
-
Hast du schon
.tables
versucht?
Edit: ich habe mich wohl bei der Fragestellung verlesen.
Aber den Namen hast du ja schon in der Abfrage. Den kannst du ja einfach in einem String speichern.
-
@jbaben: Meinst du die Spaltennamen?
Welche API nutzt du denn, um die DB-Anfragen durchzuführen?
Edit:
Als Stichworte "PRAGMA table_info(tablename)" oder "sqlite3_column_name()".
-
Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
Th69:
ja ich meine die Spaltennamen.
Ich programmiere die SQLite Datenbank mit Visual Studio 2015 C++.Fricky667:
unter sqlite_master habe ich folgendes gefunden:CREATE TABLE sqlite_master ( type TEXT, name TEXT, tbl_name TEXT, rootpage INTEGER, sql TEXT );
und
SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;
verstehe das aber nicht, da ich doch bei "CREATE TABLE" einen Namen (z.B. ARTIKEL) angebe.
Wie funktioniert denn "sqlite_master" ?MfG
Juergen B.
-
s. Edit in meinem letzten Beitrag - also z.B. Get column names in sqlite3 bzw. explizit sqlite3_column_name.
-
Hallo,
vielen Dank fuer Eure Hinweise, muss ich noch testen.
Aber vielleicht reicht es auch fürs erste wenn ich die formatierte Ausgabe einschalten kann.
Die Konsolenkommandos sind:sqlite>.header on sqlite>.mode column sqlite>.timer on
Wie kann ich das in meinem C++ Programm einfuegen ?
MfG
Juergen B.
-
Diese sog. "meta commands" funktionieren nur direkt in dem Sqlite Konsolenprogramm, nicht über die C API.
Schau dir mal das (erste) Code-Beispiel für "Metadata" (nicht zu verwechseln mit obigen "meta commands") im SQLite C tutorial an.
-
Hallo,
mit dieser Funktion werden die Spaltennamen angezeigt:
void infoTable() { sqlite3_stmt *statement; const char *query = "SELECT * FROM table_name"; if (sqlite3_prepare(dbfile, query, strlen(query), &statement, 0) == SQLITE_OK) { int ctotal = sqlite3_column_count(statement); int res = 0; while (1) { res = sqlite3_step(statement); if (res == SQLITE_ROW) { for (int i = 0; i < ctotal; i++) { string s = (char*)sqlite3_column_name(statement, i); cout << s << " "; } cout << endl; } if (res == SQLITE_DONE) { cout << "done " << endl; break; } } } }
MfG
Juergen B.
:p