SQLite3

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

Moderador: Moderadores

leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

SQLite3

Mensagem por leandrolinauer »

Boa tarde a todos.
Estou usando hoje e funcionando, xHARBOUR 1.1.0 SIMPLEX + DBF + GTWVW, e estou precisando urgente abrir tabela SQLITE3 de TERCEIROS PAF-ECF, alguem poderia me informar qual o caminho mais curto e menos dolorido para fazer isto, trabalhar com um banco de dados SQLite3?

Depois com mais tempo pretendo mudar de DBF para FIREBIRD ou até mesmo porque não SQLite3, gostei deste banco de dados.

No aguardo..
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

SQLite3

Mensagem por MARCELOG »

Veja isso,

Código: Selecionar todos

#include 'hbsqlit3.ch'

procedure main()

local oDb, cSql, aTabela, i, j

oDb:=sqlite3_open(nomedb,.f.)

if empty(oDb)

alert('Faiou!') // É assim que a gente fala lá em Minas Gerais

return

endif

cSql:='select * from nometabela'

aTabela:=sqlite3_get_table(oDb,cSql)

if sqlite3_errcode(oDb) # 0

alert(sqlite3_errmsg(oDb))

return

endif

for i:=1 to len(aTabela)

for j:=1 to len(aTabela[i])
     
? aTabela[i,j] // faça o que quiser com os dados

next j

next i

return
Espero ter ajudado.

MarceloG

Ps: Não esqueça de linkar a lib do Sqlite
Água mole em pedra dura tanto bate que até espirra!
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

SQLite3

Mensagem por leandrolinauer »

Obrigado MarceloG, grato pela resposta.
Vou testar mais com sqlite3, mas nos testes que fiz antes dava muitos erros ao fazer com xHARBOUR 1.1.0 Simplex, pesquisei no forum e entendi que teria que migrar tudo para HARBOUR 3.0, mas estou com muitos erros quando linko com HBMK2, consigo complicar o fonte com pequenas mudanças em HARBOUR 3 mas na hora de linkar a coisa pega.

Vou fazer agora a tarde outros testes com xHarbour, e posto conclusoes ainda hoje.

Grato
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

SQLite3

Mensagem por leandrolinauer »

Este é o erro que aparece.
"Error: Unresolved external ´_HB_FUN_SQLITE3_OPEN´ referenced from myFILE.OBJ

Fala que não tem a biblioteca, talvez eu esteja com a lib errada, vc tem a libe correta para o xHarbour Simplex.

No aguardo.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

SQLite3

Mensagem por leandrolinauer »

Boa tarde MarceloG.
O que ocorre, e eu não me esprecei bem na primeira mensagem, é que estou querendo linkar a sqlite no xharbour 1.0.0 simplex e o que pelo que li não é possível, teria eu que mudar para harbour, no caso 3.0.
Fiz varias mudanças no fonte para testes em 2 arquivos, o que me levou muito tempo e mesmo assim ainda não consegui compilar o fonte com HBMK2, um modelinho apenas eu consegui, até mesmo o que vc me enviou, deu certinho no 3.0, mas daí compilar todo meu fonte feito em xharbour para harbour 3.0 ta dando uma dor de cabeça.
Pergunto, vc tem ai um script do hbmk2 que funcione sem eu precisar alterar muita coisa, pode ser que o geito que estou fazendo esta errado. ??
Fiz um teste com hbformat para ver o que era, e da erro em linha que não consigo identificar o porque do erro que nao ocorre no xharbour.

Legal que se eu apenas compilar o programa com o harbour 3.0 da certo, isto sem linkar, se usar o hbmk2 da um b.o.

Fiz teste com BRMAKE e consegui até gerar o programa sem erro, mas ao executar ele nao executa nada, simplesmente entra e sai não vai para tela grafica, fiz as complicações da GTWVW em HB3.0 e outras a mais, todas deu certo a compilação.

Então, to ficando desesperado, porque precisa usar a SQLITE3 urgente, se houve alguma forma que ela funcione no xharbour 1.0.0 simplex, algo a fazer para eu conseguir abrir arquivos .S3DB fico muito grato.

Atenciosamente
Leandro
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

SQLite3

Mensagem por Stanis Luksys »

Olá,

Só pra dar um pitaco, na minha opinião, o sqlite é o real e definitivo substituto do dbf.

A faciliade de usar sql em um arquivo único de dados é incrível. Um milhão de vezes melhor do que abrir MySQL via RDD.

Claro que se o sistema for muito grande, não atende, presica de um sgbd mesmo.

Abraços.
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Harbour 3.0 e GTWVW

Mensagem por leandrolinauer »

Bom dia.
Consegui compilar e rodar programa com Harbour 3.0 e GTwvw, mas ocorre um problema usando a TBBrowseDB não aparece as linhas e colunas da grid a mesma função funcionava perfeitamente com xharbour agora deu isto.

Se alguem souber o problema, fico grato, parece que falta apenas isto para colocar em teste.

Grato
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

SQLite3

Mensagem por leandrolinauer »

Bom dia MarceloG.

Fiz como vc descreveu abaixo, e deu certo a pesquia com SELECT, agora não encontrei documentarios a respeito dos comandos e estou apanhando nos demais comandos que preciso: UPDATE, INSERT, etc.
Vale lembrar que sou leigo em SQL, estou aprendendo agora na verdade, (heheheh).

Então, estou com um update que esta dando erro, segue abaixo:

c_SQL:="UPDATE BR_SEQ_ID SET SEQ_ID = '6' WHERE TABELA = BR_PREVENDA" //assim funciona para gravar o valor 6 em SEQ_ID, o campo é INTEGER.

o valor de d_SQL é numérico, estou passando corretamente ou a variavem tem que ser texto?
onde: BR_SEQ_ID = TABELA
SEQ_ID = CAMPO
TABELA = CAMPO
c_SQL:="UPDATE BR_SEQ_ID SET SEQ_ID = "+d_SQL+" WHERE TABELA = BR_PREVENDA" //assim nao funciona
c_SQL:="UPDATE BR_SEQ_ID SET SEQ_ID = '"+d_SQL+"' WHERE TABELA = BR_PREVENDA" //assim nao funciona
c_SQL:="UPDATE BR_SEQ_ID SET SEQ_ID = '"+d_SQL+"' WHERE TABELA = 'BR_PREVENDA'" //assim nao funciona

Qual é o jeito de passar um valor númerico para gravar.

Grato pela ajuda.
Um Harbraço.
Leandro

Código: Selecionar todos

#include 'hbsqlit3.ch'
procedure main()
local oDb, cSql, aTabela, i, j
oDb:=sqlite3_open(nomedb,.f.)
if empty(oDb)
    alert('Faiou!') // É assim que a gente fala lá em Minas Gerais
return
endif

cSql:='select * from nometabela'
aTabela:=sqlite3_get_table(oDb,cSql)
if sqlite3_errcode(oDb) # 0
   alert(sqlite3_errmsg(oDb))
   return
endif

for i:=1 to len(aTabela)
      for j:=1 to len(aTabela[i])
            ? aTabela[i,j] // faça o que quiser com os dados
       next j
next i
return
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

SQLite3

Mensagem por leandrolinauer »

Bom dia.
Quando a gente é cru é só ir tentando que da certo, parece que entendi como funciona os comandos SQL.

c_SQL:="UPDATE BR_SEQ_ID SET SEQ_ID = "+ Str(d_SQL) +" WHERE TABELA = 'BR_PREVENDA'"

Gravou perfeitamente, sempre envio como texto o comando, o que difere se é um número para o sql, é as aspas, sem aspas = numerico com aspas é texto.

Vou batalhando e fazendo funcionar.

Estou com uns tutoriais sql da vida encontrados na net para estudar a fundo, porque vou precisar tbem BLOQUEAR o registro enquanto esta sendo manipulado.

Grato por enquanto. :xau
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Responder