SQLite und die SELECT Abfrage
SQLite und die SELECT Abfrage
Hallo Leute,
habe folgendes Problem bei der Abfrage der SQLite Datenbank:
Wenn ich die Abfrage starte mit:
[1] If DatabaseQuery(0, "SELECT * FROM Velindos WHERE Zeiger < 7")
Dann bekomme ich die Werte der Datenbank.
Ersetze ich die 7 mit einer Variablen kommen keine Werte der Datenbank, obwohl 7 eingegeben wird:
SuchBaseString = Val (GetGadgetText(#String_DBRecord))
[2] ] If DatabaseQuery(0, "SELECT * FROM Velindos WHERE Zeiger < SuchBaseString ")
Selbiges passiert auch wenn ich
SuchString$ = GetGadgetText(#String_DBRecord) verwende!
Kann mir jemand sagen warum!
Gruss … Velindos
habe folgendes Problem bei der Abfrage der SQLite Datenbank:
Wenn ich die Abfrage starte mit:
[1] If DatabaseQuery(0, "SELECT * FROM Velindos WHERE Zeiger < 7")
Dann bekomme ich die Werte der Datenbank.
Ersetze ich die 7 mit einer Variablen kommen keine Werte der Datenbank, obwohl 7 eingegeben wird:
SuchBaseString = Val (GetGadgetText(#String_DBRecord))
[2] ] If DatabaseQuery(0, "SELECT * FROM Velindos WHERE Zeiger < SuchBaseString ")
Selbiges passiert auch wenn ich
SuchString$ = GetGadgetText(#String_DBRecord) verwende!
Kann mir jemand sagen warum!
Gruss … Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
-
- Beiträge: 8
- Registriert: 17.09.2010 16:51
- Computerausstattung: Laptop
- Wohnort: Lengerich Westf.
Re: SQLite und die SELECT Abfrage
Hey, wir sind beide noch nicht so lange dabei... 
Lösung: If DatabaseQuery(0, "SELECT * FROM Velindos WHERE Zeiger < " + SuchBaseString )
So wie Du das gemacht hast, interpretiert PB "SuchBasString" als Spalte der Datenbank, nicht als Variable in Deinem Code.
Gruß Ralf

Lösung: If DatabaseQuery(0, "SELECT * FROM Velindos WHERE Zeiger < " + SuchBaseString )
So wie Du das gemacht hast, interpretiert PB "SuchBasString" als Spalte der Datenbank, nicht als Variable in Deinem Code.
Gruß Ralf
Re: SQLite und die SELECT Abfrage
Hallo Ralf,
du sagst es, fühl mich richtig wie an Anfänger.
Bei der Spalte Zeiger funktioniert die Sache. Wenn ich die Spalte auf Notiz stelle, funktioniert die Sache nicht mehr… Idee!
SuchBaseString$=GetGadgetText(#String_DBRecord)
If DatabaseQuery(0, "SELECT * FROM Velindos WHERE Notiz =" +SuchBaseString$ )
Gruss … Velindos
du sagst es, fühl mich richtig wie an Anfänger.
Bei der Spalte Zeiger funktioniert die Sache. Wenn ich die Spalte auf Notiz stelle, funktioniert die Sache nicht mehr… Idee!
SuchBaseString$=GetGadgetText(#String_DBRecord)
If DatabaseQuery(0, "SELECT * FROM Velindos WHERE Notiz =" +SuchBaseString$ )
Gruss … Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: SQLite und die SELECT Abfrage
Strings müssen in Hochkommata eingeschlossen werden.
DatabaseQuery(0, "SELECT * FROM Velindos WHERE Notiz = '" +SuchBaseString$ + "'")
Und bevor die nächste Frage kommt: Befinden sich in SuchBaseString$ ebenfalls Hochkommata, so müssen sie dupliziert werden.
SuchBaseString$ = GetGadgetText(#String_DBRecord)
SuchBaseString$ = ReplaceString(SuchBaseString$, "'", "''")
DatabaseQuery(0, "SELECT * FROM Velindos WHERE Notiz = '" +SuchBaseString$ + "'")
(ist aber in Access genauso)
Grüße ... Kiffi
DatabaseQuery(0, "SELECT * FROM Velindos WHERE Notiz = '" +SuchBaseString$ + "'")
Und bevor die nächste Frage kommt: Befinden sich in SuchBaseString$ ebenfalls Hochkommata, so müssen sie dupliziert werden.

SuchBaseString$ = GetGadgetText(#String_DBRecord)
SuchBaseString$ = ReplaceString(SuchBaseString$, "'", "''")
DatabaseQuery(0, "SELECT * FROM Velindos WHERE Notiz = '" +SuchBaseString$ + "'")
(ist aber in Access genauso)
Grüße ... Kiffi
a²+b²=mc²
Re: SQLite und die SELECT Abfrage
Hallo Kiffi!
nicht mein bester Tag, hatte gestern frei, muss erst meine Wolken sammeln.
Danke für die rasche und ausführliche Antwort!!!
Gruss ... Velindos
nicht mein bester Tag, hatte gestern frei, muss erst meine Wolken sammeln.
Danke für die rasche und ausführliche Antwort!!!
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
-
- Beiträge: 8
- Registriert: 17.09.2010 16:51
- Computerausstattung: Laptop
- Wohnort: Lengerich Westf.
Re: SQLite und die SELECT Abfrage
Kiffi hat eh mehr Ahnung als ich. Mir hat er eben meine Woche gerettet... auch in Sachen SQLITE.
Re: SQLite und die SELECT Abfrage
Hallo,
Habe mir eine SQL Datenbank angelegt mit der Tabelle Notiz und mit den Spalten
(ID(Integer, Aufsteigend), Stichwort(Text), Notiz(Text), Pfad(Text), Bild(Blob))
In meinen Window möchte ich nun die Werte der Datenbank anzeigen und blättern. Hierfür habe ich mir Button (mit Anfang, Ende, Vor, Zurück, Neu, Delete) angelegt.
StringGadget(#String_ID, 200, 105, 30, 20, "ID")
StringGadget(#String_Stichwort, 195, 135, 255, 20, "Stichwort")
StringGadget(#String_Notiz, 195, 170, 255, 20, "Notiz")
StringGadget(#String_Pfad, 195, 385, 255, 20, "Pfad")
ImageGadget(#Image_Bild, 195, 220, 255, 155, Bild, #PB_Image_Border)
Wie verbinde ich meine Gadget mit den Inhalten der Datenbank?
Gruss … Velindos
Habe mir eine SQL Datenbank angelegt mit der Tabelle Notiz und mit den Spalten
(ID(Integer, Aufsteigend), Stichwort(Text), Notiz(Text), Pfad(Text), Bild(Blob))
In meinen Window möchte ich nun die Werte der Datenbank anzeigen und blättern. Hierfür habe ich mir Button (mit Anfang, Ende, Vor, Zurück, Neu, Delete) angelegt.
StringGadget(#String_ID, 200, 105, 30, 20, "ID")
StringGadget(#String_Stichwort, 195, 135, 255, 20, "Stichwort")
StringGadget(#String_Notiz, 195, 170, 255, 20, "Notiz")
StringGadget(#String_Pfad, 195, 385, 255, 20, "Pfad")
ImageGadget(#Image_Bild, 195, 220, 255, 155, Bild, #PB_Image_Border)
Wie verbinde ich meine Gadget mit den Inhalten der Datenbank?
Gruss … Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: SQLite und die SELECT Abfrage
im Gegensatz zu Access oder VB(6) hast Du in PB keine Möglichkeit, GadgetsVelindos hat geschrieben:Wie verbinde ich meine Gadget mit den Inhalten der Datenbank?
an Datenbankfelder zu binden. Du musst also das Auslesen der Werte aus der
Datenbank, das Eintragen in die Gadgets und das Aktualisieren in die Datenbank
bei Änderungen der Werte in den Gadgets selber programmieren.
Grüße ... Kiffi
a²+b²=mc²
Re: SQLite und die SELECT Abfrage
Hallo,
habe mir bereits eine Prozedur geschrieben. Mein Problem ist, die Strings kann ich auf Array geben, jedoch wie mache ich das mit dem Bild?
Procedure DatenbankAnzeigen()
#DatenFILE=0
a=0
Debug DatabaseFile$
If OpenDatabase(#DatenFILE, DatabaseFile$, "", "",#PB_Database_SQLite )
If DatabaseQuery(#DatenFILE, "SELECT * FROM Notiz")
While NextDatabaseRow(#DatenFILE) ; alle Einträge durchlaufen
ID$(a)=GetDatabaseString(0,0)
StringGadget(#String_ID, 200, 105, 30, 20, ID$(a))
Stichwort$(a)=GetDatabaseString(0,1)
StringGadget(#String_Stichwort, 195, 135, 255, 20, Stichwort$(a))
Notiz$(a)= GetDatabaseString(0,2)
StringGadget(#String_Notiz, 195, 170, 255, 20, Notiz$(a))
Pfad$(a)= GetDatabaseString(0,3)
StringGadget(#String_Pfad, 195, 385, 255, 20, Pfad$(a))
;Image= GetDatabaseString(0,4)
;ImageGadget(#Image_Bild, 195, 220, 255, 155, Image, #PB_Image_Border)
Debug a
Debug ID$(a)
Debug Stichwort$(a)
Debug Notiz$(a)
Debug Pfad$(a)
a=a+1
Debug a
Wend
EndIf
FinishDatabaseQuery(#DatenFILE)
EndIf
EndProcedure
Gruss … Velindos
habe mir bereits eine Prozedur geschrieben. Mein Problem ist, die Strings kann ich auf Array geben, jedoch wie mache ich das mit dem Bild?
Procedure DatenbankAnzeigen()
#DatenFILE=0
a=0
Debug DatabaseFile$
If OpenDatabase(#DatenFILE, DatabaseFile$, "", "",#PB_Database_SQLite )
If DatabaseQuery(#DatenFILE, "SELECT * FROM Notiz")
While NextDatabaseRow(#DatenFILE) ; alle Einträge durchlaufen
ID$(a)=GetDatabaseString(0,0)
StringGadget(#String_ID, 200, 105, 30, 20, ID$(a))
Stichwort$(a)=GetDatabaseString(0,1)
StringGadget(#String_Stichwort, 195, 135, 255, 20, Stichwort$(a))
Notiz$(a)= GetDatabaseString(0,2)
StringGadget(#String_Notiz, 195, 170, 255, 20, Notiz$(a))
Pfad$(a)= GetDatabaseString(0,3)
StringGadget(#String_Pfad, 195, 385, 255, 20, Pfad$(a))
;Image= GetDatabaseString(0,4)
;ImageGadget(#Image_Bild, 195, 220, 255, 155, Image, #PB_Image_Border)
Debug a
Debug ID$(a)
Debug Stichwort$(a)
Debug Notiz$(a)
Debug Pfad$(a)
a=a+1
Debug a
Wend
EndIf
FinishDatabaseQuery(#DatenFILE)
EndIf
EndProcedure
Gruss … Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: SQLite und die SELECT Abfrage
@Velindos:
Du solltest vorher mal Deinen Code ein wenig sauberer gestalten. Mir ist schon länger
aufgefallen, dass Du mit mehreren überdimensionierten Arrays arbeitest. Das ist nicht
nur speicherbelastend sondern auch fehleranfällig. Außerdem musst Du immer eine
Counter-Variable mit Dir rumschleppen.
Hier mein Vorschlag: Arbeite mit einer strukturierten LinkedList. Dann hast Du alles an
Ort und Stelle und musst Dich nicht mit x Arrays herumschlagen.
Abgesehen davon ist das Erstellen der Gadgets in Deiner Datenbankschleife
falsch platziert. Lieber so:
oder so:
Grüße ... Kiffi
Du solltest vorher mal Deinen Code ein wenig sauberer gestalten. Mir ist schon länger
aufgefallen, dass Du mit mehreren überdimensionierten Arrays arbeitest. Das ist nicht
nur speicherbelastend sondern auch fehleranfällig. Außerdem musst Du immer eine
Counter-Variable mit Dir rumschleppen.
Hier mein Vorschlag: Arbeite mit einer strukturierten LinkedList. Dann hast Du alles an
Ort und Stelle und musst Dich nicht mit x Arrays herumschlagen.
Code: Alles auswählen
Structure sData
ID.s
Stichwort.s
Notiz.s
Pfad.s
EndStructure
Global NewList MyDataList.sData()
Procedure LadeDatenAusDatenbank(DatabaseFile.s)
Protected DB
DB = OpenDatabase(#PB_Any, DatabaseFile, "", "",#PB_Database_SQLite)
If DB
If DatabaseQuery(DB, "SELECT * FROM Notiz")
While NextDatabaseRow(DB) ; alle Einträge durchlaufen
AddElement(MyDataList())
MyDataList()\ID = GetDatabaseString(0,0)
MyDataList()\Stichwort = GetDatabaseString(0,1)
MyDataList()\Notiz = GetDatabaseString(0,2)
MyDataList()\Pfad = GetDatabaseString(0,3)
Wend
FinishDatabaseQuery(DB)
EndIf
CloseDatabase(DB)
EndIf
EndProcedure
Abgesehen davon ist das Erstellen der Gadgets in Deiner Datenbankschleife
falsch platziert. Lieber so:
Code: Alles auswählen
LadeDatenAusDatenbank(MeineDatenbank)
[...]
OpenWindow(...)
[...]
; Ersten Datensatz anzeigen
FirstElement(MyDataList())
StringGadget(#String_ID, 200, 105, 30, 20, MyDataList()\ID)
StringGadget(#String_Stichwort, 195, 135, 255, 20, MyDataList()\Stichwort)
StringGadget(#String_Notiz, 195, 170, 255, 20, MyDataList()\Notiz)
StringGadget(#String_Pfad, 195, 385, 255, 20, MyDataList()\Pfad)
[...]
Code: Alles auswählen
[...]
OpenWindow(...)
[...]
StringGadget(#String_ID, 200, 105, 30, 20, "")
StringGadget(#String_Stichwort, 195, 135, 255, 20, "")
StringGadget(#String_Notiz, 195, 170, 255, 20, "")
StringGadget(#String_Pfad, 195, 385, 255, 20, "")
[...]
LadeDatenAusDatenbank(MeineDatenbank)
[...]
; Ersten Datensatz anzeigen
FirstElement(MyDataList())
SetGadgetText(#String_ID, MyDataList()\ID)
SetGadgetText(#String_Stichwort, MyDataList()\Stichwort)
SetGadgetText(#String_Notiz, MyDataList()\Notiz)
SetGadgetText(#String_Pfad, MyDataList()\Pfad)
Grüße ... Kiffi
a²+b²=mc²