Datenbank Frage

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
wpshadow
Beiträge: 22
Registriert: 21.11.2010 21:56
Computerausstattung: i7 3770, 8gb RAM, Samsung 840 PRO SSD
Pure Basic 5.60

Datenbank Frage

Beitrag von wpshadow »

Hallo,

bin neu hier und habe gleich mal damit begonnen, etwas mit der Datenbank herum zu experimentieren. Ich habe das Datenbank - Beispiel he rgenommen und etwas experimentiert.

Im Hintergrund liegt eine kleine selbst gebastelte SQLite - Datenbank, die ganz simpel strukturiert ist: id als INTEGER, inhalt als VARCHAR(50)

Darin liegen ein paar Testdaten:

id inhalt
0 aaa
1 bbb
2 ccc

Bei meinem ersten Versuch hat es ohne Probleme funktioniert, jedoch habe ich nun versucht, die Informationen über die Funktionen "auswählbar" zu machen, also die Spalte, Table und die ID auswählbar zu machen. Könnt ihr mir vielleicht sagen, wo ich falsch denke? Hier ist der Code:

Code: Alles auswählen

Declare db_init()
Declare.s db_get(spalte.s, table.s, id.s)

EnableExplicit


db_init()
Debug db_get("inhalt", "foo", "1")



Procedure db_init()
  Protected ok.i, db_open.b = #False
  Protected db_req.b = #False
  Protected test$
  
  ok.i = FileSize("data/db/lrdb.s3db")
  
  If ok.i > 0
    UseSQLiteDatabase()
    db_open = #True
  Else    
    Debug ("Datei nicht gefunden")
    End
  EndIf
  
  OpenDatabase(0, "data/db/lrdb.s3db", "", "")
  
EndProcedure


Procedure.s db_get(spalte.s, table.s, id.s)
  Protected wert.s
  
      ;If OpenDatabase(0, "data/db/lrdb.s3db", "", "")
        If DatabaseQuery(0, "SELECT" + spalte + "FROM" + table + "WHERE id = " + id)
          
           While NextDatabaseRow(0)
             wert = GetDatabaseString(0, 0)
           Wend
           
            FinishDatabaseQuery(0)
         EndIf
       ;EndIf
         
    ProcedureReturn wert      
  
  EndProcedure
GLG

W.
;-)
Pure Basic 5.60
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Datenbank Frage

Beitrag von Bisonte »

Da fehlen meines Erachtens Leerzeichen ...

z.B. so

Code: Alles auswählen

If DatabaseQuery(0, "SELECT " + spalte + " FROM " + table + " WHERE id = '" + id + "'")
P.S.: Welcome to the forum ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
wpshadow
Beiträge: 22
Registriert: 21.11.2010 21:56
Computerausstattung: i7 3770, 8gb RAM, Samsung 840 PRO SSD
Pure Basic 5.60

Re: Datenbank Frage

Beitrag von wpshadow »

Bisonte hat geschrieben:Da fehlen meines Erachtens Leerzeichen ...

z.B. so

Code: Alles auswählen

If DatabaseQuery(0, "SELECT " + spalte + " FROM " + table + " WHERE id = '" + id + "'")
Oh Mann, ja, das war es tatsächlich! Shame on me! :D

Danke für die schnelle Hilfe! Das hatte ich vollkommen übersehen!
Bisonte hat geschrieben:P.S.: Welcome to the forum ;)
Danke dir! Ich fühle mich jetzt schon wohl hier! :mrgreen:
;-)
Pure Basic 5.60
TheCreepyProgramer
Beiträge: 42
Registriert: 11.06.2011 13:22

Re: Datenbank Frage

Beitrag von TheCreepyProgramer »

Was mir auch noch aufgefallen ist: In der Funktion db_init() hast du eine Variable 2 mal definiert:

Code: Alles auswählen

  ok.i = FileSize("data/db/lrdb.s3db")
 
  If ok.i > 0
Im If-Teil muss das ".i" weg ;) Ansonsten wird das nicht so ganz funktionieren. In C würde z. B. der Compiler mit einer Fehlermeldung abbrechen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Datenbank Frage

Beitrag von ts-soft »

@TheCreepyProgramer

PureBasic ist ein BASIC, da braucht man den Suffix nicht weglassen, gerade für Einsteiger ist dieser sogar hilfreich und auf
keinen Fall ein Fehler. Bei den meisten Basic-Dialekten ist der Suffix sogar unbedingt erforderlich!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
wpshadow
Beiträge: 22
Registriert: 21.11.2010 21:56
Computerausstattung: i7 3770, 8gb RAM, Samsung 840 PRO SSD
Pure Basic 5.60

Re: Datenbank Frage

Beitrag von wpshadow »

Das bedeutet, daß es sowohl mit Suffix als auch ohne funktioniert...

Das ist gut zu wissen! Ich werde mal vorerst den Variablentypen dabei lassen --> das erhöht für mich vor allem die Lesbarkeit und führt im Augenblick auch dazu, daß ich einfach aufpassen muß und nichts vergesse :D
;-)
Pure Basic 5.60
Antworten