Hallo,
Jedoch möchte ich gerne ersteinmal SQLite3 statt einer "richtigen" MySQL DB benutzen.
Also habe ich angefangen eine MySQL Einführung zu lesen weil ich denke(hoffe) das die SQLite3-querys analog zu den MySQL-querys funktionieren.
prinzipiell ja, aber der Teufel steckt im Detail.
Was mache ich hier falsch?
Verschiedenes:
CREATE TABLE News (
ID INT AUTO_INCREMENT PRIMARY KEY,
Autor VARCHAR(30) NOT NULL,
Titel VARCHAR(50) NOT NULL,
Inhalt TEXT NOT NULL,
Datum DATETIME NOT NULL
);
nach meinen Tests mit einer 3er-SQLite-Version wird *bei mir* das unbekannte Schlüsselwort AUTO_INCREMENT einfach ignoriert. Sprich: Du hast keine automatischen Werte für Deine ID.
Nun ist ein Autoincrement für SQLite sowieso überflüssig, weil SQLite sowas schon automatisch in jeder Tabelle eingebaut hat: ROWID. Willst Du dagegen eine "manuell" definierte Autoinkrement-Spalte, kannst Du dies im einfachsten Fall durch
spaltenname INTEGER PRIMARY KEY
erreichen, siehe SQLite-FAQ 1. Willst Du sicherstellen, dass Autoinkrement-Werte nur einmal vergeben werden, verwende das Schlüsselwort AUTOINCREMENT. Die Syntax von SQLite ist dabei sehr strikt, was die Reihenfolge der Schlüsselwörter angeht:
ID INT PRIMARY KEY AUTOINCREMENT,
Kein Unterstrich und *nach* PRIMARY KEY.
Nun zum INSERT-Statement:
INSERT INTO
News(Autor, Titel, Inhalt, Datum)
VALUES
("Ich",
"Meine erste News",
"Hiermit teste ich wie man Datensätze in MySQL einfügt",
NOW());
SQLite weist übrigens die Funktion NOW() als unbekannt zurück. Das ist kein großes Wunder, solche Funktionen heißen bei fast jedem DBMS anders. SQLite bietet Dir zum Beispiel DATETIME().
Es ist keine besonders gute Idee, Zeichenketten in SQL in doppelte Anführungszeichen zu setzen. Üblich - und von manchen Datenbankmanagementsystemen (DBMS) ausschließlich erlaubt - sind einfache Anführungszeichen. Daher ist es eine gute Idee, konsequent auf einfache Anführungszeichen zu setzen, auch wenn SQLite doppelte zuläßt.
Anmerkung: Ich habe *nicht* mit einer mit PHP gebündelten Version von SQLite getestet!
Freundliche Grüße
Vinzenz