Problem mit sqlite

lord_fritte

Vice Admiral Special
Mitglied seit
28.08.2005
Beiträge
959
Renomée
1
Ich habe eine Tabelle Mitarbeiter mit folgenden Feldern:
id INTEGER( 5 ) primary key autoincrement
name VARCHAR( 20 ) NOT NULL
vorname VARCHAR( 20 ) NOT NULL

Und wenn ich nun da jemanden eintrage möchte:
Code:
INSERT INTO 'Mitarbeiter' (id, name, vorname) VALUES ( ' ', 'Nachname', 'Vorname')

Bekomme ich diesen Fehler: 20: datatype mismatch
 
Zuletzt bearbeitet:
Hallo,

probier doch bitte mal folgendes Befehl.

INSERT INTO Mitarbeiter (id, name, vorname) VALUES ( ' ', 'Nachname', 'Vorname')

;D
 
Tritt der Fehler auch bei folgendem Befehl noch auf?

INSERT INTO Mitarbeiter (id, name, vorname) VALUES ( null, 'Nachname', 'Vorname');
 
aaaah, es geht danke ^^
Jetzt habe ich aber noch ein anderes Problem,
Die Tabelle habe ich mit SQLite Administrator erstellt, wenn ich versuche die Tabelle manuell zu erstellen mit
Code:
CREATE TABLE Mitarbeiter (id INTEGER( 5 ) NOT NULL PRIMARY KEY AUTOINCREMENT ,name VARCHAR( 20 ) NOT NULL ,vorname VARCHAR( 20 ) NOT NULL)

Bekomme ich diesen Fehler: AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY
 
Denke dein Fehler liegt in der Schreibweise vom Auto_Increment.

Versuchs mal so:

CREATE TABLE Mitarbeiter (
ID INT( 5 ) NOT NULL PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR( 20 ) NOT NULL ,
Vorname VARCHAR( 20 ) NOT NULL
);
 
nein, leider nicht: "near "AUTO_INCREMENT": syntax error"

EDIT:
Ich habe es gerade durch versuchen herausgefunden, man darf dem Integer irgendwie keine nummer geben, so geht es:
Code:
CREATE TABLE 'Mitarbeiter' ('ID' INTEGER PRIMARY KEY AUTOINCREMENT, 'Name' VARCHAR( 20 ) NOT NULL, 'Vorname' VARCHAR( 20 ) NOT NULL)
 
Zuletzt bearbeitet:
Mh... vielleicht ist das auch eine Eigenheit von sqlite oder mysql ist da ein bisschen großzügiger :P

Aber wenn du weniger als 11 Stellen (Integer) beim Primary Key haben willst, dann nimm einfach den Datentyp Smallint, dieser hat nur 6 Stellen.
 
Danke für Tipp.
Hmm wieso kann nicht alles von anfang an funktionieren wie es soll? ^^

Naja ich hoffe mir kann auch jemand bei C++ Helfen, dass ist ein C++ Programm für eine sqllite abfrage:
PHP:
#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"

typedef struct sqlite_vm sqlite_vm;

int sqlite_compile(
    sqlite3 *db,              /* The open database */
    const char *zSql,        /* SQL statement to be compiled */
    const char **pzTail,     /* OUT: uncompiled tail of zSql */
    sqlite_vm **ppVm,        /* OUT: the virtual machine to execute zSql */
    char **pzErrmsg          /* OUT: Error message. */
);

int sqlite_step(
    sqlite_vm *pVm,          /* The virtual machine to execute */
    int *pN,                 /* OUT: Number of columns in result */
    const char ***pazValue,  /* OUT: Column data */
    const char ***pazColName /* OUT: Column names and datatypes */
);

int sqlite_finalize(
    sqlite_vm *pVm,          /* The virtual machine to be finalized */
    char **pzErrMsg          /* OUT: Error message */
);

int main(int argc, char **argv){
    sqlite3 *db;           /*Datenbank-Objekt*/
    sqlite_vm *dbcursor;
    char *dberr = 0;      /*Fehlermeldungen*/
    char *sql, *sqltail;  /*SQL-Kommandos*/

    /*
    * Datenbankdatei öffnen
    */
    if(!sqlite3_open("test2.s3db", &db)){
        printf("Hoppla: %sn", dberr);
        free(dberr);
        return 1;
    }


    /*
    * Beispiel für Select-Statement
    */
    sql = "SELECT * FROM Mitarbeiter";
    /* Lege Statement-Cursor an (Konstruktor) */
    if(SQLITE_OK != sqlite_compile(db, sql, &sqltail, &dbcursor, &dberr)) { //Zeile 48
        printf("Oha: %sn", dberr);
        free(dberr);
    }else{
        int ncols;        /*Anzahl zurückgegebener Spalten*/
        char **colnames;  /*Spaltennamen*/
        char **values;    /*Spalteninhalte*/

        /* arbeite Ergebnis mit Cursor ab */
        while (SQLITE_ROW == sqlite_step(dbcursor, &ncols, &values, &colnames)) { //Zeile 57
            printf("nr='%s', name='%s'n", values[0], values[1]);
        }
    }

    /*
    * Datenbank schließen
    */
    sqlite3_close(db);

    return 0;
}

Wenn ich es Compilieren möchte, bekomme ich folgende Fehler:
Code:
E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:: In function `int main(int, char**)':
E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:48: error: invalid conversion from `char**' to `const char**'
E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:48: error:   initializing argument 3 of `int sqlite_compile(sqlite3*, const char*, const char**, sqlite_vm**, char**)'
E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:57: error: invalid conversion from `char***' to `const char***'
E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:57: error:   initializing argument 3 of `int sqlite_step(sqlite_vm*, int*, const char***, const char***)'
E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:57: error: invalid conversion from `char***' to `const char***'
E:\Daten\Dokumente\.Dokumente\Projekte\CodeBlocks\sqlite2\main.cpp:57: error:   initializing argument 4 of `int sqlite_step(sqlite_vm*, int*, const char***, const char***)'
:: === Build finished: 6 errors, 0 warnings ===
 
Zuletzt bearbeitet:
Zurück
Oben Unten