SQLite-Befehl LIKE funktioniert nicht? (gelöst)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

SQLite-Befehl LIKE funktioniert nicht? (gelöst)

Beitrag von dysti »

Hallo,

der SQLite-Befehl LIKE funktioniert nicht?
DatabaseQuery gibt aber eine 1 zurück!
Warum erhalte ich kein Abfrageergebnis?

Code: Alles auswählen

#db0=0
dbzaehler=0
UseSQLiteDatabase()
DatabaseFile$ = "i:\purebasic\forumexamples\bestand.sqlite"
;DatabaseFile$ = GetTemporaryDirectory()+"\Database.sqlite"
Debug DatabaseFile$
If CreateFile(#db0, DatabaseFile$)
   CloseFile(#db0)
   
   If OpenDatabase(#db0, DatabaseFile$, "", "")
      DatabaseUpdate(#db0, "CREATE TABLE bestand (Dsnr  INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE  Not NULL, Name VARCHAR(40) , Stueck NUMERIC(10) , Preis NUMERIC(10,2))")
      DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('"+Name$+"', '"+Stueck$+"', '"+Str(Preis)+"')")
      DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('Tastatur', '5', '25.55')")
      DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('DVD-Laufwerk', '20', '33.00')")
      DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('Festplatte 160GB', '23', '133.00')")
      DatabaseUpdate(#db0, "INSERT INTO bestand (Name, Stueck, Preis) VALUES ('USB-Stick 2GB', '44', '3.00')")
      If DatabaseQuery(#db0, "SELECT * FROM bestand")
         While NextDatabaseRow(#db0)
            Debug "Datensatznummer:  "+ GetDatabaseString(#db0, 0)
            Debug "Artikel        :  "+ GetDatabaseString(#db0, 1)
            Debug "Stück        :  "  + GetDatabaseString(#db0, 2)
            Debug "Preis          :  "+ GetDatabaseString(#db0, 3)
            dbzaehler=dbzaehler+1
         Wend
       EndIf
      
      Debug ""
      Debug "_______________________" 
      Debug""
      such$="Fe"   ;wir fragen nach der "Festplatte"
      frage = DatabaseQuery(#db0, "SELECT ALL Name FROM bestand WHERE Name LIKE '"+ Trim(such$)+"*'")
      Debug "Datenbankabfrage erfolgreich: " + Str(frage) ;war die Datenbankabfrage erfolgreich
      If Not frage
      Debug "Error:"+DatabaseError()                      ;wenn nein, welcher Fehlercode
      EndIf
      NextDatabaseRow(#db0)
      lzdb=GetDatabaseLong(#db0, 0)
      
      Debug "das suche ich: "+"'"+ Trim(such$)+"*'" ;Überprüfung des Abfragestrings
      Debug "Datensatznummer: "+Str(lzdb) + "      / sollte eine 3 ergeben"        ; gefundene Datensatznummer
      Debug "Name: "+GetDatabaseString(#db0, 1)     ; gefundenen Artikel
          
      FinishDatabaseQuery(#db0)
       
   Else
      Debug "Can't open database !"
   EndIf
Else
   Debug "Can't create the database file !"
EndIf 
Zuletzt geändert von dysti am 03.08.2009 10:22, insgesamt 1-mal geändert.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: SQLite-Befehl LIKE funktioniert nicht?

Beitrag von Kiffi »

dysti hat geschrieben:

Code: Alles auswählen

frage = DatabaseQuery(#db0, "SELECT ALL Name FROM bestand WHERE Name LIKE '"+ Trim(such$)+"*'")
Select ALL Name FROM? Ist mir (und anscheinend SQLite auch) als Query-Syntax
unbekannt. Wie wäre es mit Select * From?

Und als Wildcard nimmste nicht '*', sondern '%'. Dann passt's :-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

@Kiffi,
au Backe, wo hatte ich meine Gedanken.
Super @Kiffi, es hat geklappt.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Antworten