Sqlite erstellt Tables aus Zahlen nicht

Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Antworten
JohnR
Beiträge: 42
Registriert: 3. Dezember 2011 13:23

Sqlite erstellt Tables aus Zahlen nicht

Beitrag von JohnR » 12. Januar 2012 18:45

Hi

Ich habe ein Problem mit sqlite.

Im Rahmen eines Projektes habe ich mir eine Funktion geschrieben die von a-f, 0-9 für 4 Stellen alle möglichen Werte generiert...

also bspw. aaaa,aaab...aaa0 oder auch ffff,fffa,fffb...fff0

Wenn ich diese Werte aus einer QStringlist dann in eine sqlite Tabelle als tables einfüge geht das mit allem was als ersten Wert einen Buchstaben hat wunderbar, bspw. alle 4 stellingen Werte aus diesem Range die mit a beginnen.....

beim Zahlen-Bereich - 0000, 0001, 000a, 0aaa, 0fff usw. bekomme ich aber folgende Fehlermeldung als lasterror

Code: Alles auswählen

QSqlError(1, "Unable to execute statement", "near "1000": syntax error") 
Kann ich keine reinen Zahlenwerte als Tables anlegen, oder dürfen diese nicht mit Zahlen beginnen ??

Falls es wieder mal ne "blöde Frage" ist sorry ist meine erste Berührung mit sqlite jedenfalls in programmiertechnischer Hinsicht.

Gruß John

Christian81
Beiträge: 7313
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Sqlite erstellt Tables aus Zahlen nicht

Beitrag von Christian81 » 12. Januar 2012 19:48

1. Was ist hier nun Qt?
2. Wie sieht denn nun das betreffende Query aus?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung

JohnR
Beiträge: 42
Registriert: 3. Dezember 2011 13:23

Re: Sqlite erstellt Tables aus Zahlen nicht

Beitrag von JohnR » 12. Januar 2012 21:58

zu 1.
Sonstiges
Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Lieber Mod, ich schreibe dieses Problem unter "Sonstiges" was noch dazu unterhalb der Rubrik "C++ Grundlagen" angeordnet ist....

Da nun QT SQL unterstützt, wie auch C++ "Grundlagen", ich hoffe diese Herleitung ist ausreichend :wink:

Falls nicht stellen sie doch einfach klar das sie derlei posts hier nicht wünschen....., erspart mir tipperei zur Formulierung der Frage und ihnen bei der Formulierung der Antwort.

zu 2.

mal ausführlich

öffnen db

Code: Alles auswählen

QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" );
   QString dir = QCoreApplication::applicationDirPath();
   dir.append(QDir::separator()).append("test.db.sqlite");
   dir = QDir::toNativeSeparators(dir);
   db.setDatabaseName(dir);
   db.open();
erstellen der 4 stelligen Werte a-f 0-9 hier "fest" auf 0 gelegt

Code: Alles auswählen

   QStringList md5sourcegen <<"a"<<"b"<<"c"<<"d"<<"e"<<"f"<<"1"<<"2"<<"3"<<"4"<<"5"<<"6"<<"7"<<"8"<<"9"<<"0";

   int a = 0;
   int b = 0;
   int c = 0;

   while (a < 16)
   {
       dbfilesystest.append("0" + md5sourcegen[a] + md5sourcegen[b] + md5sourcegen[c]);
       ++c;
       if (c == 16) {++b;c = 0;}
       if (b == 16) {++a;b = 0;c = 0;}
   }


   qDebug() << dbfilesystest.size() << "dbfilesystest.size()";
und hier das anlegen der tables

Code: Alles auswählen

    // Create table "hashes"

    QSqlQuery query;
    for (int b = 0;b < dbfilesystest.size();++b)
    {
    QString dbinsert = dbfilesystest[b];

    if (db.isOpen())
            {

            query.exec("create table " + dbinsert +
                      "(id integer primary key, "
                      "hash text(32), "
                      "comment text(200), "
                       "date integer)");
            }
    }

        qDebug() << db.isValid();
        qDebug() << query.lastError();
   db.close();
mfG
John

franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Sqlite erstellt Tables aus Zahlen nicht

Beitrag von franzf » 12. Januar 2012 22:16

Wenn du schon weißt, dass der Query nur fehlschlägt, wenn deine Tabellennamen ein bestimmtes Schema aufweisen, solltest du stutzig werden, und mal google fragen, z.B. nach "sqlite valid table names".

JohnR
Beiträge: 42
Registriert: 3. Dezember 2011 13:23

Re: Sqlite erstellt Tables aus Zahlen nicht

Beitrag von JohnR » 12. Januar 2012 23:47

gut dann ist das kein valider Tablename......

@franzf nach sqlite tablename int hatte ich gesucht, aber nix brauchbares gefunden, das valid hätte mir halt noch einfallen sollen :mrgreen:


so dachte ich eher das etwas anderes nicht stimmt, ist wie gesagt mein erstes Projekt in Richtung Datenbanken

mfG John

Antworten