SQlite Datenbank Datum ein und auslesen
-
Hallo,
ich habe eine SQLite Datenbank die ich mit Borland 6 c++ anspreche.
Ich habe eine Datenbank lokal erstellt.
sqlite3 *db; int rc; rc = sqlite3_open(PathDB.c_str(),&db);
Dann eine Tabelle erstellt
int rc; rc = sqlite3_open(PathDB.c_str(),&db); tmp = "CREATE TABLE IF NOT EXISTS T99 "; tmp = tmp + "(Bez1 DOUBLE, "; tmp = tmp + "Bez2 DATE);";
Dann schreibe ich Daten in die Tabelle
String tmp1; tmp1 = "\""; char * buffer; int rc; char *zErrMsg = 0; String query; if(rc = sqlite3_open(PathDB.c_str(),&db)) double jetzt = Time(); jetzt = Now(); query = "insert into T99(Bez1,Bez2)VALUES("; query = query + tmp1 + uniquenr1 + tmp1 ; query = query + "," + tmp1 + jetzt + tmp1 ; query = query + ");"; buffer = query.c_str (); rc = sqlite3_exec(db, buffer, callback, 0, &zErrMsg);
In der Datenbank sind auch die Richtigen Werte drinnen.
Datum = 41332,4980045486
Beim Auslesen der Daten aus der Datenbank
ist in Bez2 nur der Wert 41332
also alles nach Komma wird nicht ausgelesen.
Habe schon mit float TDateTime probiert nichts
funktioniert.String& query = "select Bez1,Bez2 from T99"; query = query + " order by Bez2 desc"; txtMeld1->Text = query; int zeile = 0; int spalte = 0; buffer = query.c_str (); double Bez1; // double Bez2; //float Bez2; TDateTime Bez3; int lang; double value; int Bez4; sqlite3_stmt *statement; if (sqlite3_prepare_v2(db,buffer, -1, &statement, 0)==SQLITE_OK) { while(sqlite3_step(statement)==SQLITE_ROW) { //Bez1 = sqlite3_column_int(statement, 0); Bez1 = sqlite3_column_double(statement, 0); Bez2 = sqlite3_column_double(statement, 1);
Wer kann mir da helfen?
Vielen Vielen Dank
-
SQLite hat dafür "REAL"
aber meiner Erfahrung nach ist das nicht wirklich gut zu handeln
weil REAL die einzige Ausnahme ist,
alles andere ist Text..Also würde ich im Zweifel vielleicht gleich alles als Text behandeln
damit kann man sich ne Menge Verrenkungen sparen.
-
So jetzt Tabelle erstellt mit Real
tmp = "CREATE TABLE IF NOT EXISTS T98 "; tmp = tmp + "(Bez1 DOUBLE, "; tmp = tmp + "Bez2 REAL);";
mit was auslesen?
Hatte jaBez2 = sqlite3_column_double(statement, 1);
Diese Möglichkeiten habe ich
const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
double sqlite3_column_double(sqlite3_stmt*, int iCol);
int sqlite3_column_int(sqlite3_stmt*, int iCol);
sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
int sqlite3_column_type(sqlite3_stmt*, int iCol);
sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
-
Hat s denn nicht funktioniert ?
Wenn Nein - Was ist passiert ?