kein Eintrag in DB

Anfängerfragen zum Programmieren mit PureBasic.
Baba_Smurf
Beiträge: 55
Registriert: 01.03.2015 12:05
Wohnort: Saarland / Püttlingen
Kontaktdaten:

Re: kein Eintrag in DB

Beitrag von Baba_Smurf »

Guten Morgen und ein frohes Neues Jahr,

ich bin immer noch am experimentieren mit der Datenbank, die oberen Probleme habe ich gereglt bekommen,
jetzt habe ich ein Problem, bei dem ich nicht weiß warum das ganze nicht so funktioniert, wie ich es mir vorstelle.

folgender Code aus einer Datei:

Code: Alles auswählen

Procedure Abteil()
  OpenWindow(#Abteilfenster, #PB_Ignore, #PB_Ignore, 300, 120, "Abteilung anlegen",#PB_Window_WindowCentered)
    TextGadget(#PB_Any, 10,  10, 290, 20, "Name der Abteilung:", #PB_Text_Center) ;Text anzeigen
    StringGadget(#Abteilung , 8, 45, 282, 20, "Abteilung", #PB_String_UpperCase)  ;Eingabe Feld anzeigen & positionieren
    ButtonGadget(#ButtonAnlegen, 70, 80, 70, 30, "an&legen" )                     ;Button anlegen
    ButtonGadget(#ButtonAbbrechen,160,80,70,30,"a&bbrechen")
    
  EndProcedure
  


  Procedure Datenbank_erstellen()
    AbtDB$ = GetGadgetText(#Abteilung)
    ;Öffnen der Datenbank "Kunden"
OpenDatabase(0, "host=localhost port=5432 dbname=Regal", "postgres", "postgres",#PB_Database_PostgreSQL)

;Tabelle "Kunde" anlegen
DatabaseUpdate (0, "CREATE TABLE"+AbtDB$+"(vorname text, name text)")


;Drei Datensätze in die Datenbank schreiben
DatabaseUpdate (0,"INSERT INTO Kunde VALUES ('horstr', 'Mrmann')")
DatabaseUpdate (0,"INSERT INTO Kunde VALUES ('Tmas', 'Mustann')")
DatabaseUpdate (0,"INSERT INTO Kunde VALUES ('Frk', 'Test')")
Debug "-----------------------------------------------------"
Debug "ALLE KUNDEN MIT NACHNAME MUSTERMANN ANZEIGEN"

;Liest alle Einträge mit dem Namen Mustermann aus
If DatabaseQuery(0, "SELECT * FROM Kunde WHERE name LIKE 'Mustermann'")
  While NextDatabaseRow(0)  ; alle Einträge durchlaufen
    Debug GetDatabaseString(0,0) ;Spalte 0 auslesen
    Debug GetDatabaseString(0,1) ;Spalte 1 auslesen
  Wend
  FinishDatabaseQuery(0)
EndIf
Debug AbtDB$
Debug "-----------------------------------------------"
Debug "ALLE KUNDEN DER DB ANZEIGEN"

;Liest alle Einträge der Tabelle aus
If DatabaseQuery(0, "SELECT * FROM Kunde")
  While NextDatabaseRow(0)  ; alle Einträge durchlaufen
    Debug GetDatabaseString(0,0) ;Spalte 0 auslesen
    Debug GetDatabaseString(0,1) ;Spalte 1 auslesen
  Wend
  FinishDatabaseQuery(0)
EndIf   
  EndProcedure  
AbtDB$ habe ich als GLOBAL declariert, nun sollte doch eine Datenbank mit dem Namen den ich im Textfeld eingebe erstellt werden,
aber irgendwie passiert das nicht, habe ich einen Denkfehler oder einen grobfährlässigen Programmfehler, den ich nicht blicke??

mfg

PS: Datenbank habe ich mir irgendwie leichter vorgestellt :cry:
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: kein Eintrag in DB

Beitrag von Andesdaf »

Code: Alles auswählen

DatabaseUpdate (0, "CREATE TABLE"+AbtDB$+"(vorname text, name text)")
Hier fehlt mindestens ein Leerzeichen vor AbtDB$. Am Besten, du überprüfst jede Datenbankaktion mit DatabaseError().
Win11 x64 | PB 6.20
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: kein Eintrag in DB

Beitrag von Micha122 »

1. Es wäre besser Du würdest den ganzen Code posten
2. Auf die schnelle: UsePostgre..........?

Grüße
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: kein Eintrag in DB

Beitrag von TroaX »

Wie schon angemerkt wurde, fehlt das Leerzeichen. Allerdings sage ich gleich. Postgres ist eine Relationale Datenbank. Korrekter wäre es, wenn du eine Tabelle Kunde, eine Tabelle Abteilung und für Kunde eine extra Spalte, die auf die zugewiesene Abteilung verweist.

Und wenn du unbedingt für jede Abteilung eine eigene Tabelle willst, setze immer einen Prefix davor (z.B. Abt_). Dann gibt es auch weniger Nameskonflikte. Aber die Relationale Variante ist eigentlich vorzuziehen.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Baba_Smurf
Beiträge: 55
Registriert: 01.03.2015 12:05
Wohnort: Saarland / Püttlingen
Kontaktdaten:

Re: kein Eintrag in DB

Beitrag von Baba_Smurf »

Hi,

mal abgesehen von den Leerzeichen, lag es einfach nur an einem Neustarts meines Rechners, es wid jetzt per Textgadget, die Tabelle erzeugt, die ich möchte.

mfg
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: kein Eintrag in DB

Beitrag von Micha122 »

TroaX hat geschrieben:An PGAdmin könnte es liegen. Am Programm nicht. Wenn die Debug-Ausgabe funktioniert, liegen die Daten auch in der Datenbank. Sowieso wäre mir PGAdmin 4 nicht recht, da mir dieses mit Python aufgesetzte Ding mir zu Fett vorkommt. HeidiSQL macht auch mit den neuren PG-Versionen einen brauchbaren Job. Installiert verwende ich aber DBeaver. Da es die meisten wichtigen SQL-Basierten Datenbanken unterstützt, lohnt es sich wirklich, dies auch zu installieren. Verwalte damit alle meine Datenbanken.
Bin gerade mal dabei alle Rechner auszumisten.
Nur mal so zur Info:
Die C++ Version pgAdmin3 1.22 schlägt mal gerade mit 31,8 MB zu Buche.
pg Admin4 1.0 (Python) direkt mit 233 MB.

OT:
Ich gehe einfach mal davon aus, das in pgAdmin4 locker über 100MB nicht benutztes Framework enthalten ist.
Nur mal so zum vergleich: Die DB Version 9.6 benötigt nur 381MB

Grüße, Micha
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: kein Eintrag in DB

Beitrag von TroaX »

Soweit ich weiß, liefert PGAdmin 4 auch gleich das komplette Python mit. Das ist leider der neueste Trend. Das gleiche gibt es auch zum Beispiel bei Node. Zum Beispiel jede Electron-Anwendung liefert Node mit. Ich verwende Microsoft Visual Studio Code, Slack, Discord, Insomnia und habe auch noch ein reines Node zum selber programmieren. Ich habe also gerade mindestens 5 mal Node auf meinem Rechner. Da aber bei der einen oder anderen App auch das Updatesystem etwas ... bescheiden ist, sogar noch öfter. Slack habe ich gerade in 3 unterschiedlichen Versionen drauf und alle haben das Node dabei.

Ich kann den Trend, Frontends komplett in HTML, CSS und Javascript zu machen, voll und ganz nachvollziehen. Aber wenn dann auch noch das ganze Backend samt Interpreter in JS/Python/PHP geschrieben wird und die Interpreter mit ausgeliefert werden, dann hört es da bei mir auf.

Wie gesagt gibt es leichtgewichtigere Alternativen. DBeaver ist meiner Meinung nach noch der beste Client. Und zwar meiner Meinung nach für alle kompatiblen SQL Datenbanken. Zwar blöd, das er auf Java basiert. Aber das brauch man dann auch nur einmal installieren.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Antworten