Seite 1 von 1

PB4.4 B2 & UsePostgreSQLDatabase()

Verfasst: 25.08.2009 10:34
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

Verfasst: 25.08.2009 12:28
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
  

Verfasst: 25.08.2009 12:35
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

Verfasst: 25.08.2009 13:36
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
  

Verfasst: 25.08.2009 14:19
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

Verfasst: 31.08.2009 12:41
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:

Verfasst: 31.08.2009 12:53
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

Verfasst: 31.08.2009 14:13
von mk-soft
Danke :allright:

Verfasst: 31.08.2009 15:56
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

Verfasst: 31.08.2009 16:47
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