Seite 1 von 1

String lässt sich einfach nicht in Sqlite einfügen

Verfasst: Sonntag 22. April 2007, 23:02
von sprudel
Hallo.
Ich möchte gerne eine Zahl in eine Sqlite Datenbank einfügen.

Das Feld ist vom Typ Numeric. Der Query sieht zb. So aus:

INSERT INTO `datenbank`(x,y,zahl) VALUES('%s','%s','%s')


alles wird ganz normal eingefügt... Nur diese blöde Zahl nicht.
Ich hab schon den gesamten Query ausgeben lassen... Die Zahl ist wirklich drin. Sqlite will sie nur irgendwie nicht haben. Das Feld ist danach einfach leer. Ich versteh das irgendwie nicht.

Hoffe ihr findet eine Lösung... Ich bin mit meinen Lösungen jedenfalls am Ende.

Gruß sprudel

Verfasst: Montag 23. April 2007, 06:03
von mitsuhiko
Zu wenig Code. Schipsel und Table Definition her :)

Vielleicht ist Zahl falsch formatiert ?

Verfasst: Montag 23. April 2007, 07:54
von sunmountain
Eigentlich (bis auf ein paar Ausnahmen) juckt SQLite Deine Tabellendefinition nicht.
Vielleicht hast Du einfach die Zahl falsch formatiert ?

Verfasst: Montag 23. April 2007, 09:39
von BlackJack
Es ist übrigens besser/sicherer Werte nicht selbst in SQL-Befehle einzufügen, sondern das dem Datenbankmodul zu überlassen. Das Kommando sähe für SQLite so aus:

Code: Alles auswählen

'INSERT INTO datenbank (x, y, zahl) VALUES (?, ?, ?)'
Die Argumente übergibt man als Tupel als zweites Argument der `execute()`-Methode.

Verfasst: Montag 23. April 2007, 11:10
von sprudel
Also die Tabelle ist so aufgebaut:

CREATE TABLE vokabeln (lastlearn NUMERIC, cat TEXT, tense TEXT, type TEXT, bmk TEXT, fach TEXT, falsch NUMERIC, id INTEGER PRIMARY KEY, richtig NUMERIC, text1 TEXT, lang1 TEXT, text2 TEXT, lang2 TEXT);


und so tu ich in die Datenbank schreiben:

DB.execute("INSERT INTO vokabeln (id,lang1,text1,lang2,text2,fach,type,tense,bmk,cat) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (id,lang1,text1,lang2,text2,fach,type,tense,bmk,cat) )

Verfasst: Montag 23. April 2007, 13:01
von rafael

Verfasst: Samstag 28. April 2007, 18:33
von Leonidas
Besser (sicherer, lesbarer) so:

Code: Alles auswählen

DB.execute("INSERT INTO vokabeln (id, lang1, text1, lang2, text2, fach, type, tense, bmk, cat) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (id, lang1, text1, lang2, text2, fach, type, tense, bmk, cat))