Olá todos, pesquisei na documentação do HSQLDB como dar um start no Banco em uma classe java. Mas não achei nada parecido, vi alguns post na internet, mas nenhum fala o que eu preciso.
Muitas pessoas fizeram tutoriais de como fazer a conexão, mas essa parte está pronta já. Só nao quero abrir um terminar e fazer o start via comando pra minha conexão funcionar. Quero que faça esse start “sozinho”.
Você pode criar um serviço no SO e configura-lo para ser iniciado quando do carregamento do sistema.
Para fazer isso, temos, por exemplo:
- srvany.exe --> (http://www.vogella.de/articles/ApacheDerby/article.html#service)
- Java Service Launcher (JSL) --> (http://sourceforge.net/projects/jslwin)
- Java Service Wrapper by Tanuki Software --> (http://wrapper.tanukisoftware.org/doc/english/index.html)
Até breve.
Vixi, vou distribuir minha aplicação pra várias pessoas, não queria mexer no SO delas. Mas vou dar uma olhada nesses links
Tnks
Dica: abra o hsqldb.jar com o Netbeans, por exemplo, e localize o método main a que se refere o runServer.bat.
Pelo script de batch analisei que temos o seguinte:
java -cp …/lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb
Ou seja, este comando mostra que org.hsqldb.Server tem um método [color=blue]public void static main(String[] args)[/color]. Cada argument fornecido é membro de um array. Daí esbocei o seguinte:
public void startHsqlDb(){
try{
org.hsqldb.Server.main(new String[]{"-database.0", "file:mydb", ...});
}
catch(ExceptionNecessariaCapturada netbc){
// vc sabe o q fazer aqui
}
}
Mas não sei se essa é a melhor forma de inicializar o servidor.
Estude http://www.hsqldb.org/doc/src/org/hsqldb/Server.html
E viva o Open Source !
Consegui fazer ele startar por uma classe:
[code]public static void startDB(){
try{
org.hsqldb.Server.main(new String[]{"-database.0", "file:cartao", "-dbname.0", "cartao"});
}
catch(Exception e){
JOptionPane.showMessageDialog(null,"Erro ao abrir DB = "+e);
}
} [/code]
Agora não acho minhas tabelas …
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2536)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:890)
at br.com.fastway.cobranca.hibernatedao.UsuarioDAO.getByLogin(UsuarioDAO.java:57)
at org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:85)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:534)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1352)
at br.com.fastway.common.HibernateTransaction.doFilter(HibernateTransaction.java:39)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:474)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:934)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:404)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:869)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:346)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:581)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1057)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:807)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:220)
at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:526)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:41)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:528)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: user lacks privilege or object not found: USUARIO
at org.hsqldb.jdbc.Util.sqlException(Util.java:215)
at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(JDBCPreparedStatement.java:3957)
at org.hsqldb.jdbc.JDBCConnection.prepareStatement(JDBCConnection.java:637)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1700)
at org.hibernate.loader.Loader.doQuery(Loader.java:801)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2533)
Li ambos sites, e mesmo assim … nada
Você tem que informar a onde está localizado a pasta do seu BD.