Linux + harbour + postgre

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

danielgianni
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 28 Abr 2010 14:20
Localização: Ribeirão Preto - SP

Linux + harbour + postgre

Mensagem por danielgianni »

Pessoal programo em várias linguagens (C#, flex, php, e outras) mas resolvi fazer "downgrade" para voltar aos bons tempos do clipper.

Quando descobri o harbour fiquei empolgado porque não é pago como o xharbour e parece que funciona muito bem no linux.

Gostaria de saber se alguém teve experiência em usar o harbour com o postgresql em ambiente linux, pois além de ter que relembrar como programa-se em clipper estou com muitas dúvidas quanto a essa integração e não percebi uma documentação muito detalhada nesse aspecto.

Desde já minhas desculpas se esse tópico causar alguma reação negativa a algum membro mais "das antigas", minha intenção é participar cada vez mais e o que aprender compartilhar com vocês.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Linux + harbour + postgre

Mensagem por Itamar M. Lins Jr. »

Puxa!
Voltar do C# para xBase é incompreensivel para mim.
Agora o que tem haver PHP/Flex com Harbour é a mesma coisa que comparar uvas e bananas, com feijão e arroz.
São propositos diferentes embora o Harbour faça e até melhor (na minha opnião) quando usamos ele no campo do PHP por exemplo. Já o Flex podemos usa-lo em conjunto com o Harbour uma vez que o Flex não faz o que o harbour se propoe a fazer.
Entretanto os exemplos de acesso (sua pergunta) ao Postgresql em ambinente Linux ou Windows podem ser obtidos acessando a pasta contrib.

Código: Selecionar todos

C:\harbour\trunk\harbour\contrib\hbpgsql\tests
/*
 * $Id: stress.prg 14109 2010-03-08 18:08:39Z vszakats $
 */

/*
 * VERY IMPORTANT: Don't use this querys as sample, they are used for stress tests !!!
 */

#include "common.ch"
#include "postgres.ch"

PROCEDURE Main( cServer, cDatabase, cUser, cPass )
   LOCAL conn, res, i, x

   LOCAL cQuery

   CLEAR SCREEN

   ? "Connecting...."
   conn := PQconnect( cDatabase, cServer, cUser, cPass, 5432 )

   ? PQstatus( conn ), PQerrormessage( conn )

   IF PQstatus( conn ) != CONNECTION_OK
      QUIT
   ENDIF

   ? "Dropping table..."

   PQexec( conn, "DROP TABLE test" )

   ? "Creating test table..."
   cQuery := "CREATE TABLE test("
   cQuery += "     Code integer not null primary key, "
   cQuery += "     dept Integer, "
   cQuery += "     Name Varchar(40), "
   cQuery += "     Sales boolean, "
   cQuery += "     Tax Float4, "
   cQuery += "     Salary Double Precision, "
   cQuery += "     Budget Numeric(12,2), "
   cQuery += "     Discount Numeric(5,2), "
   cQuery += "     Creation Date, "
   cQuery += "     Description text ) "

   PQexec( conn, cQuery )
   PQexec( conn, "SELECT code, dept, name, sales, salary, creation FROM test" )
   PQexec( conn, "BEGIN" )

   FOR i := 1 TO 10000
      @ 15, 0 SAY "Inserting values...." + Str( i )

      cQuery := "INSERT INTO test(code, dept, name, sales, salary, creation) " +;
                "VALUES( " + Str( i ) + "," + Str( i + 1 ) + ", 'DEPARTMENT NAME " + StrZero( i ) + "', 'y', " + Str( 300.49 + i ) + ", '2003-12-28' )"

      PQexec( conn, cQuery )

      IF Mod( i, 100 ) == 0
         ? PQexec( conn, "COMMIT" )
         ? PQexec( conn, "BEGIN" )
      ENDIF
   NEXT

   FOR i := 5000 TO 7000
      @ 16, 0 SAY "Deleting values...." + Str( i )

      cQuery := "DELETE FROM test WHERE code = " + Str( i )
      PQexec( conn, cQuery )

      IF Mod( i, 100 ) == 0
         PQexec( conn, "COMMIT" )
         PQexec( conn, "BEGIN" )
      ENDIF
   NEXT

   FOR i := 2000 TO 3000
      @ 17, 0 SAY "Updating values...." + Str( i )

      cQuery := "UPDATE FROM test SET salary = 400 WHERE code = " + str( i )
      PQexec( conn, cQuery )

      IF Mod( i, 100 ) == 0
         PQexec( conn, "COMMIT" )
         PQexec( conn, "BEGIN" )
      ENDIF
   NEXT

   res := PQexec( conn, "SELECT sum(salary) as sum_salary FROM test WHERE code between 1 and 4000" )

   IF PQresultStatus( res ) == PGRES_TUPLES_OK
      @ 18, 0 SAY "Sum values...." + PQgetvalue( res, 1, 1 )
   ENDIF

   x := 0
   FOR i := 1 TO 4000
      res := PQexec( conn, "SELECT salary FROM test WHERE code = " + Str( i ) )

      IF PQresultStatus( res ) == PGRES_TUPLES_OK
         x += Val( PQgetvalue( res, 1, 1 ) )

         @ 19, 0 SAY "Sum values...." + Str( x )
      ENDIF
   NEXT

   ? "Closing..."
   conn := NIL

   RETURN
Esse é um exemplo, usando hbpgsql.
Os documentos são escassos mesmo, precisamos olhar diretamente nos fontes para aprender.
Infelizmente ainda não uso acesso a esses SGBD, razão pela qual não posso te ajudar mais.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Linux + harbour + postgre

Mensagem por Itamar M. Lins Jr. »

Mais uma coisa.
o xHabour é gratuito.

Saudações,
Itamar M. Lins jr.
Saudações,
Itamar M. Lins Jr.
Responder