Alguem manja legal de HSQLDB?

8 respostas
D

eaeee Javeiros!

hj comecei a me aventurar com HSQLDB… em stand-alone e usando o DatabaseManager eu achei bem legal… o banco é rapidinho e tal…

mas a minha real intenção é por o banco dentro de uma aplicação web rodando como stand-alone… tipo o banco vai ta dentro do .WAR… localizado em /WEB-INF/db/
o jar do hsqldb ta em /WEB-INF/lib e devidamente no ClassPath…

só q nao consgui fazer a web-app acessar o banco…
alguem pode me indicar um passo a passo de como fazer essa “instalação” ou entao me ajudar como fazer isso?

olhem o q eu ja tentei fazer (e q nao funcionou):

  1. abri o DatabaseManager e criei um banco, e montei as tabelas.
  2. importei os novos arquivos do banco (*.script, *.data, etc, etc) para dentro do projeto. na pasta /WEB-INF/db
  3. importei o hsqldb.jar para a pasta /WEB-INF/lib e puis o jar no classpath
  4. tentei fazer um pooling com o c3p0
    e da o seguinte erro:
    java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver

apesar de nao ter achado o driver do hsqldb, eu coloquei o hsqldb no classpath… eu nao queria colocar o driver na pasta common/lib do tomcat, pq se eu precisar trocar de servidor e só tiver acesso a pasta webapps aí nao funcionaria. (ja me ocorreu isso. de só ter acesso a pasta webapps)

o q to fazendo de errado?
help-me! :cry:

valeuzzzz
abraços!

8 Respostas

D

pessoal… to tendo progressos!

pra testar, coloquei o hsqldb.jar na maldita pasta common/lib do tomcat…
aí ele encontrou o driver!

só q agora tenho outro problema… q parece ser mais serio… :cry: :cry:
é o seguinte…
agora ele nao encontrou o banco propriamente dito…
eu fiz assim:
com o DatabaseManager, eu criei um banco com as tabelas e tudo mais…
peguei os arquivos gerados (site.script, site.lck, site.properties e site.txt) e joguei dentro do meu projeto em WEB-INF/hsqldb/
aí na classe q conecta eu assim na variavel de URL do banco: jdbc:hsqldb:file:WEB-INF/hsqldb/site
e aí ele nao encontrou o banco… ou melhor, nao encontrou as tabelas do banco… mas se eu abro o banco com o DatabaseManager, as tabelas estao la!

me ajudem por favorrrrrrr! :cry: :cry:
o q eu faço pra aplicação encontrar o HSQLDB dentro da minha aplicação??? de preferencia de um jeito q eu nao precise colocar o driver dentro do Tomcat (common/lib)

obrigado!

D

:cry:

R

então daniel, o HSQLDB é meio furada para web no modo standalone pq ele cria e acessa a pasta com os dados, apontando o path relativo o local onde a main-class esta… e é paia para multiplos acessos… usa no modo webserver…

D

aeeeeee!! finalmente alguem!
vale ae cara

entao… nao tinha pensado nesse ponto…

mas eu queria rodar em standalone, pra facilitar a instalação da aplicação em outros servers…

mas a minha pricipal duvida prevalece… tem como deixar o driver do banco só na aplicação? sem precisar copiar o jar do driver pra dentro da pasta common/lib do tomcat?

mas se alguem souber um jeito q fazer o hsqldb rodar em standalone dentro da propria aplicação web, me explica! hehehe

abraços a todos

M

o JNuke usa esse HSQLDB, da um bizu com o frank, enche o saco dele um poco talvez ele saiba heahe

F

Daniel,

tem 4 formas de rodar o HSQLDB. Eu uso ele em memória para executar os test cases automaticamente. E uso o modo server para desenvolver.

Para fazer o que tu quer precisa usar o modo “In-Process (Standalone) Mode”. Tu pode ler mais em: http://hsqldb.sourceforge.net/web/hsqlDocsFrame.html

Basicamente este modo consiste em só passar o caminho do BD na string de conexão. Tu não precisa rodar o server antes de tentar conectar. O driver JDBC do HSQLDB vai startar ele para ti.
O ruim é q tu não consegue acessar esta base de dados através de nenhuma outro programa, nem pelo Manager.

Tu faz assim para rodar neste modo:

Connection c = DriverManager.getConnection(jdbc:hsqldb:file:testdb, sa, “”);

Ou se preferir usar o caminho relativo.

Connection c = DriverManager.getConnection(jdbc:hsqldb:file:/opt/db/testdb, sa, “”);
D

blz Frank… valeu aí! :grin:

só q ainda me restou uma dúvida:
o DB ja precisa estar com as suas tabelas e tal…
se eu fizer assim:
Connection c = DriverManager.getConnection(“jdbc:hsqldb:file:site”, “daniel”, “***”);

ele fala q nao encontrou um user DANIEL… mas é pq o banco nao existe.
percebi se eu usar como username “sa” e password vazio, ele cria o banco na hora… só q vai ta vazio, sem as tabelas…

o q eu precisava fazer era criar criar o banco por fora da aplicao e por fora e depois importar pra dentro da app… isso é possivel?

abraços?

F

Acho que tu pode sobrescrever os arquivos do modo “In-process” com os arquivos gerados pelo modo Server.

Criado 12 de fevereiro de 2005
Ultima resposta 16 de fev. de 2005
Respostas 8
Participantes 4