Bom dia pessoal
Como é feito atualmente o acesso a banco de dados com harbour?
Pretendo usar o harbour 3.0
Gostaria de usar acesso "direto" sem RDDs, pode ser com ADO.
Qual banco seria melhor nesse caso?
Gostaria de usar Mysql preferencialmente ou Firebird
Grato
Antonio Carlos
Banco de dados
Moderador: Moderadores
Banco de dados
Olá Antonio !
.
.
.
C:\HB\contrib\hbfbird
C:\HB\contrib\hbfbird\tests
.
.
.
C:\HB\contrib\hbfbird\tests\Test.prg
.
.
.
C:\HB\contrib\hbfbird
C:\HB\contrib\hbfbird\tests
.
.
.
C:\HB\contrib\hbfbird\tests\Test.prg
Código: Selecionar todos
/*
* $Id: test.prg 17540 2012-06-04 17:08:19Z vszakats $
*/
#include "simpleio.ch"
PROCEDURE Main()
LOCAL cServer := "localhost:"
LOCAL cDatabase
LOCAL cUser := "SYSDBA"
LOCAL cPass := "masterkey"
LOCAL nPageSize := 1024
LOCAL cCharSet := "ASCII"
LOCAL nDialect := 1
LOCAL cName
LOCAL trans, qry
LOCAL db, x, y
LOCAL num_cols
LOCAL columns
LOCAL fetch_stat
LOCAL tmp
hb_FNameSplit( hb_argv( 0 ), NIL, @cName, NIL )
cDatabase := hb_DirTemp() + cName + ".fdb"
IF hb_FileExists( cDatabase )
FErase( cDatabase )
ENDIF
? tmp := FBCreateDB( cServer + cDatabase, cUser, cPass, nPageSize, cCharSet, nDialect ), FBError( tmp )
/* Connect rdbms */
db := FBConnect( cServer + cDatabase, cUser, cPass )
IF HB_ISNUMERIC( db )
? "Error:", db, FBError( db )
QUIT
ENDIF
? "Testing invalid request"
? tmp := FBExecute( db, "sldjfs;ldjs;djf", nDialect ), FBError( tmp )
trans := FBStartTransaction( db )
IF HB_ISNUMERIC( trans )
? "Error:", trans, FBError( trans )
ELSE
? tmp := FBQuery( db, "create table teste (code smallint)", nDialect, trans ), FBError( tmp )
? tmp := FBCommit( trans ), FBError( tmp )
ENDIF
? "==="
trans := FBStartTransaction( db )
IF HB_ISNUMERIC( trans )
? "Error:", trans, FBError( trans )
ELSE
? tmp := FBQuery( db, "CREATE TABLE customer( customer VARCHAR(20) )", nDialect, trans ), FBError( tmp )
? tmp := FBCommit( trans ), FBError( tmp )
ENDIF
? "==="
trans := FBStartTransaction( db )
IF HB_ISNUMERIC( trans )
? "Error:", trans, FBError( trans )
ELSE
? "Status Execute: ", tmp := FBExecute( db, 'insert into customer(customer) values ("test 1")', nDialect, trans ), FBError( tmp )
? "Status Rollback: ", tmp := FBRollback( trans ), FBError( tmp )
ENDIF
trans := FBStartTransaction( db )
IF HB_ISNUMERIC( trans )
? "Error:", trans, FBError( trans )
ELSE
? "Status Execute: ", tmp := FBExecute( db, 'insert into customer(customer) values ("test 2")', nDialect, trans ), FBError( tmp )
? "Status Commit: ", tmp := FBCommit( trans ), FBError( tmp )
ENDIF
? "Status Execute: ", tmp := FBExecute( db, 'insert into customer(customer) values ("test 3")', nDialect ), FBError( tmp )
// FIX WINDOWS GPF BELOW
qry := FBQuery( db, "SELECT * FROM customer", nDialect )
IF HB_ISNUMERIC( qry )
? "Error:", qry, FBError( qry )
ELSE
num_cols := qry[ 4 ]
columns := qry[ 6 ]
FOR x := 1 TO num_cols
? x, "> "
FOR y := 1 TO Len( columns[ x ] )
?? columns[ x, y ], " "
NEXT
NEXT
? "---"
DO WHILE ( fetch_stat := FBFetch( qry ) ) == 0
? fetch_stat
FOR x := 1 TO num_cols
?? FBGetData( qry, x ), ", "
NEXT
ENDDO
? "Fetch code:", fetch_stat
? "Status Free Query: ", FBFree( qry )
ENDIF
/* Close connection with rdbms */
? "Status Close Database: ", tmp := FBClose( db ), FBError( tmp )
RETURN
M., Ronaldo
by: IMATECH
IMATION TECNOLOGIA
by: IMATECH
IMATION TECNOLOGIA
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Banco de dados
Olá Antonio,
Depende muito para qual vai ser a utilidade, quantidade de acessos e mais um monte de coisas que temos que levar em considerações.
Um exemplo, se você deseja usar essa base de dados remotamente o Firebird não á nada indicado para isso, por ter um péssimo desempenho em remoto, agora para sistema MONO usuário onde o client é o mesmo servidor fica mais facil de usar Firebird por ser fácil de instalar( apesar que hoje em dia todos são muito fácil ).
Outro ponto que eu particularmente levo em consideração é a questão da licenças dos SGBD o Firebird e PostgreSQL são realmente e totalmente FREE para uso e para venda se assim desejar, mas o Mysql não é bem assim, ele é apenas FREE se o seu aplicativo ou site for de acesso free também. Outra coisa, faça testes, veja os recursos que precisa e boa sorte na sua escolha...
Depende muito para qual vai ser a utilidade, quantidade de acessos e mais um monte de coisas que temos que levar em considerações.
Um exemplo, se você deseja usar essa base de dados remotamente o Firebird não á nada indicado para isso, por ter um péssimo desempenho em remoto, agora para sistema MONO usuário onde o client é o mesmo servidor fica mais facil de usar Firebird por ser fácil de instalar( apesar que hoje em dia todos são muito fácil ).
Outro ponto que eu particularmente levo em consideração é a questão da licenças dos SGBD o Firebird e PostgreSQL são realmente e totalmente FREE para uso e para venda se assim desejar, mas o Mysql não é bem assim, ele é apenas FREE se o seu aplicativo ou site for de acesso free também. Outra coisa, faça testes, veja os recursos que precisa e boa sorte na sua escolha...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Antonio
- Usuário Nível 3

- Mensagens: 347
- Registrado em: 14 Ago 2003 17:33
- Localização: Sao Paulo - SP
- Contato:
Banco de dados
Obrigado Leonardo e Ronaldo pelas respostas.
Na verdade é para uso pessoal em rede local então prefiro Mysql.
Me parece que o xHarbour oferece melhor suporte a acesso em banco de dados, ou estou enganado?
Voces mais tarimbados, teriam um nmodelo de codigo ou classe de conexão de harbour ou xHarbour com Mysql?
Grato
Antonio Carlos
Na verdade é para uso pessoal em rede local então prefiro Mysql.
Me parece que o xHarbour oferece melhor suporte a acesso em banco de dados, ou estou enganado?
Voces mais tarimbados, teriam um nmodelo de codigo ou classe de conexão de harbour ou xHarbour com Mysql?
Grato
Antonio Carlos
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC