Seite 1 von 1

Sqlite erstellt Tables aus Zahlen nicht

Verfasst: 12. Januar 2012 17:45
von JohnR
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

Re: Sqlite erstellt Tables aus Zahlen nicht

Verfasst: 12. Januar 2012 18:48
von Christian81
1. Was ist hier nun Qt?
2. Wie sieht denn nun das betreffende Query aus?

Re: Sqlite erstellt Tables aus Zahlen nicht

Verfasst: 12. Januar 2012 20:58
von JohnR
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

Re: Sqlite erstellt Tables aus Zahlen nicht

Verfasst: 12. Januar 2012 21:16
von franzf
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".

Re: Sqlite erstellt Tables aus Zahlen nicht

Verfasst: 12. Januar 2012 22:47
von JohnR
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