PB4.4 B2 & UsePostgreSQLDatabase()

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

PB4.4 B2 & UsePostgreSQLDatabase()

Beitrag von Kiffi »

Hallo,

hat jemand von euch schon herausgefunden, wie man eine PostgreSQL -
Datenbank unter Verwendung des neuen UsePostgreSQLDatabase()
konnektieren kann?

Danke im voraus & Grüße ... Kiffi
a²+b²=mc²
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Beitrag von - chris - »

Also, lokal auf einem Rechner sieht das schon mal
so aus:

Code: Alles auswählen

UsePostgreSQLDatabase()

Define SQL.s

If OpenDatabase(0, "" ,"postgres", "super")

  Debug "OpenDatabase"
  Debug ""

  ;Goto Ausgabe

  t = ElapsedMilliseconds()

  SQL = "BEGIN TRANSACTION"
  If DatabaseUpdate(0, SQL)  
    Debug "BEGIN TRANSACTION"
  EndIf  

  For n = 1 To 10000
    val1 = Random(9999)
    val2 = Random(9999)
    val3 = Random(9999) 
    SQL = "INSERT INTO postgres.public.werte VALUES ("+Str(val1)+", "+Str(val2)+", "+Str(val3)+");"
    If DatabaseUpdate(0, SQL)
      ;Debug "INSERT INTO"
    EndIf  
  Next n

  SQL = "COMMIT"
  If DatabaseUpdate(0, SQL)  
    Debug "COMMIT"
  EndIf  

  t1 = ElapsedMilliseconds() - t  
  Debug "Zeit: " + Str(t1) + "ms"

  Ausgabe:

  SQL = "SELECT COUNT(*) FROM postgres.public.werte"
  If DatabaseQuery(0, SQL) 
  
    Debug "SELECT COUNT(*)"  

    col = DatabaseColumns(0)
    Debug col

    While NextDatabaseRow(0)   
      zeile$ = ""
      For n = 0 To col-1
        spalte$ = GetDatabaseString(0, n) 
        zeile$ = zeile$ + spalte$
        If n < col-1
          zeile$ = zeile$ + ";"
        EndIf  
      Next n
      Debug zeile$   
    Wend

    Debug ""

  EndIf


  SQL = "SELECT * FROM postgres.public.werte"
  If DatabaseQuery(0, SQL) 

    Debug "SELECT * FROM"
    
    col = DatabaseColumns(0)
    Debug col
    
    zeile$ = ""
    For n = 0 To col-1
      name$ = DatabaseColumnName(0, n)
      zeile$ = zeile$ + name$
      If n < col-1
        zeile$ = zeile$ + ";"
      EndIf  
    Next
    Debug zeile$

    t = ElapsedMilliseconds()
 
    While NextDatabaseRow(0)   
    zeile$ = ""
    For n = 0 To col-1
      spalte$ = GetDatabaseString(0, n) 
      zeile$ = zeile$ + spalte$
      If n < col-1
        zeile$ = zeile$ + ";"
      EndIf  
    Next n
    ;Debug zeile$   
    Wend

    t1 = ElapsedMilliseconds() - t  
    Debug "Zeit: " + Str(t1) + "ms"
 
  EndIf

  CloseDatabase(0)
 
Else

  Debug DatabaseError()
 
EndIf
  
PB v5.72 x86/x64
Windows 10 Pro 64bit
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Hallo - chris -,

Code: Alles auswählen

postgres.public.werte
ah! Das fehlte mir. Quasi ein Namespace für die Tabellen.

OK, danke für den Tipp! :allright:

Grüße ... Kiffi
a²+b²=mc²
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Beitrag von - chris - »

Im Netzwerk sieht es dann so aus:

Code: Alles auswählen


UsePostgreSQLDatabase()

Define SQL.s

If OpenDatabase(0, "host=192.168.1.88 dbname=postgres" ,"postgres", "super")

  Debug "OpenDatabase"
  Debug ""

  SQL = "SELECT COUNT(*) FROM public.werte"
  If DatabaseQuery(0, SQL) 
  
    Debug "SELECT COUNT(*)"  

    col = DatabaseColumns(0)
    Debug col

    While NextDatabaseRow(0)   
      zeile$ = ""
      For n = 0 To col-1
        spalte$ = GetDatabaseString(0, n) 
        zeile$ = zeile$ + spalte$
        If n < col-1
          zeile$ = zeile$ + ";"
        EndIf  
      Next n
      Debug zeile$   
    Wend

    Debug ""

  EndIf


  SQL = "SELECT * FROM public.werte"
  If DatabaseQuery(0, SQL) 

    Debug "SELECT * FROM"
    
    col = DatabaseColumns(0)
    Debug col
    
    zeile$ = ""
    For n = 0 To col-1
      name$ = DatabaseColumnName(0, n)
      zeile$ = zeile$ + name$
      If n < col-1
        zeile$ = zeile$ + ";"
      EndIf  
    Next
    Debug zeile$

    t = ElapsedMilliseconds()
 
    While NextDatabaseRow(0)   
    zeile$ = ""
    For n = 0 To col-1
      spalte$ = GetDatabaseString(0, n) 
      zeile$ = zeile$ + spalte$
      If n < col-1
        zeile$ = zeile$ + ";"
      EndIf  
    Next n
    ;Debug zeile$   
    Wend

    t1 = ElapsedMilliseconds() - t  
    Debug "Zeit: " + Str(t1) + "ms"
 
  EndIf

  CloseDatabase(0)
 
Else

  Debug DatabaseError()
 
EndIf
  
PB v5.72 x86/x64
Windows 10 Pro 64bit
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

- chris - hat geschrieben:Im Netzwerk sieht es dann so aus:

Code: Alles auswählen

If OpenDatabase(0, "host=192.168.1.88 dbname=postgres" ,"postgres", "super")
Gut! Ich habe noch herausgefunden, dass man auch den Port angeben kann.

Code: Alles auswählen

If OpenDatabase(0, "host=192.168.1.88 port=5432 dbname=postgres" ,"postgres", "super")
Nochmals Danke & Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Bei kommt eine Fehlermeldung. Muss ich erst den Datenbanktreiber installieren oder ist es wie bei SQLite?
could not connect to server: Connection refused (0x0000274D/10061)
Is the server running on host "???" and accepting
TCP/IP connections on port 5432?
OS = Windows XP Home

:cry:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

mk-soft hat geschrieben:Muss ich erst den Datenbanktreiber installieren oder ist es wie bei SQLite?
Der PostgreSQL-Server muss hierfür installiert und gestartet sein -> http://www.postgresql.de/

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Danke :allright:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
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

Beitrag von ts-soft »

Irgendwie gibts da immer Probleme bei der Installation unter Windows.
Kann da mal jemand ein paar Tipps geben, das der Service auch startet
usw., bzw. welche Version, die Normale oder die Enterprise wäre hilfreich?

Irgendwie krieg ich hier nur Kuddelmuddel und bei der Enterpriseversion
sogar einen Anmeldebildschirm den ich garnicht so sehr liebe.

Hoffe mal da kann jemand Tipps geben.

Gruß

Thomas
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
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

ts-soft hat geschrieben:welche Version, die Normale oder die Enterprise
Enterprise? Finde ich gar nicht. Ich habe wahrscheinlich die 'normale' unter
http://www.postgresql.org/download/ heruntergeladen und installiert.

Beim Stöbern in diversen Foren habe ich gelesen, dass es zuweilen
Probleme beim Starten des Services gibt. Da scheint es um die
Berechtigungen des Users 'postgres' zu gehen. Wenn man das lokale
Systemkonto nimmt, gibt es wohl keine Probleme:

Systemsteuerung -> Verwaltung -> Dienste -> PostgreSQL Server 8.4 -> Eigenschaften -> Anmelden

Grüße ... Kiffi
a²+b²=mc²
Antworten