Último apelo... NetBeans com Hsqldb? Alguém entende?

Links, tutoriais, etc. Os problemas ainda persistem.

Alguém aí já conseguiu criar um banco de dados com o hsqldb do tipo standalone, criou um programa em Java usando como IDE o NetBeans e conseguiu configurar o NetBeans para integrá-lo com o hsqldb? E teve sucesso na sua aplicação?
Se alguém conseguiu fazer isso, seria possível, POR FAVOR, postar aqui um passo-a-passo nos mínimos detalhes, para que eu saiba onde está ocorrendo o meu erro?

Obrigado.

cara, provavelmente você não está usando o jdbc da forma correta, dá uma olhada nesse link

:arrow: http://www.hsqldb.org/web/hsqlDocsFrame.html

Parece que as coisas começaram a melhorar por aqui.

Eu coloquei na pasta “LIB” não só o hsqldb.jar mas o arquivo “functions” que estava no mesmo diretório do HSQLDB. Não sei parece que ajudou.

Agora estou com outros problemas:

Olha os erros que ocorrem:

java.sql.SQLException: Table not found in statement [SELECT * FROM clientes]
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)


Na chamada:

Connection conexao = DriverManager.getConnection(“jdbc:hsqldb:file:C:caminhodobd/clientes”, “sa”, “”);

Devo colocar o caminho completo do banco de dados + nome do banco?

E quando adiciono um novo drive HSQLDB na aba Runtime? Connecting Using também deve ter o CAMINHO COMPLETO + NOME DO BANCO?

Ou será que o problema foi na hora de criar a tabela “clientes” no hsqldb? Esqueci algo?

Ao executar ações no hsqldb não se esqueça de terminar o programa com

stm.execute( “shutdown” );

ou os dados não serão gravados, ficando apenas na memória e sendo perdidos quando o programa é fechado

:wink:

esqueci de te falar, o stm é uma variável do tipo Statement que você critou na aplicação.

Alguém tem alguma sugestão para corrigir o fato de que a tabela não é encontrada?

tenta esse caminho para sua conexão

Connection conexao = DriverManager.getConnection("jdbc:hsqldb:file:/caminhodobd/clientes", "sa", ""); 

Responda se funcionou !

Não, não funcionou. Continua o mesmo problema:

java.sql.SQLException: Table not found in statement [SELECT * FROM clientes]
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)

E agora?

Tente:

Connection conexao = DriverManager.getConnection("jdbc:hsqldb:file:C:/caminhodobd/clientes", "sa", ""); 

E ao criar a tabela tente colocar a palavra “cached” antes de table.

CREATE CACHED TABLE CLIENTES

Não, não funcionou.
O PROBLEMA ainda é insolúvel!

[quote=coffee break mao]Não, não funcionou.
O PROBLEMA ainda é insolúvel![/quote]
[size=24][color=red]Desta vez vai fí…tenha paciência …leia até o final… e não desista… [/color][/size]
se vc não conseguir com este tutorial aqui , me fale, que tento mais uma vez :roll: :arrow: HSQLDB com NetBeans 5.0

Faça este processo descrito abaixo , fora do NetBeans e vê se funciona.
Se conseguir , eu coloco o passo a passo de como configurar sua aplicação no NetBeans que tenho lá em casa, caso a primeira não te atenda.

Link do Arquivo :arrow: JM30

Tutorial:
Primeiros passos
com o HSQLDB

Na segunda página da revista é que mostra como configurar no NetBeans…tá lá em casa…coloco aqui mais tarde !
E ai funcionou agora?

Ainda não funcionou!
Ainda ocorrem esses erros:

java.sql.SQLException: Table not found in statement [SELECT * FROM clientes]
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)

Deve ser algum erro ao indicar o path do banco de dados.
O nome da pasta é “db”. Nela eu crio o banco de dados, e se eu for procurar lá dentro, todos os arquivos criados com o hsqldb estão lá, incluindo os dados salvos através de SQL.
Deve ser algum detalhe na hora de setar o ConnectingUsing no drive HSQLDB no NetBeans.
Ou algum detalhe na hora de fazer a conexão com o banco via Java, no getConection(…) etc.
E agora? Ainda há esperança?

[quote=coffee break mao]Ainda não funcionou!
Ainda ocorrem esses erros:

java.sql.SQLException: Table not found in statement [SELECT * FROM clientes]
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)

Deve ser algum erro ao indicar o path do banco de dados.
O nome da pasta é “db”. Nela eu crio o banco de dados, e se eu for procurar lá dentro, todos os arquivos criados com o hsqldb estão lá, incluindo os dados salvos através de SQL.
Deve ser algum detalhe na hora de setar o ConnectingUsing no drive HSQLDB no NetBeans.
Ou algum detalhe na hora de fazer a conexão com o banco via Java, no getConection(…) etc.
E agora? Ainda há esperança? [/quote]

Amigo , vc realmente leu os dois tutoriais ?
Faz o seguinte , coloca seu projeto em um zip e adiciona ele no post ae , que mais tarde eu arrumo pra vc.

O código é esse:

import javax.swing.;
import java.sql.
;

public class TelaPrincipal {

JFrame mainTela = new JFrame(“Principal.”);
Connection conexao;
Statement sentenca;
ResultSet resultadoConsulta;
String consulta1 = “SELECT * FROM CLIENTES”;
int clienteId;
String clienteNome;
String clienteTelefone;
JTextField idText = new JTextField(4);
JTextField nomeText = new JTextField(35);
JTextField telefoneText = new JTextField(8);
JPanel camposPanel = new JPanel();

public TelaPrincipal() {

  mainTela.setExtendedState(JFrame.MAXIMIZED_BOTH);
  mainTela.setVisible(true);
  mainTela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  camposPanel.add(idText);   
  camposPanel.add(nomeText);
  camposPanel.add(telefoneText);
  mainTela.add(camposPanel);
  
  try {
     Class.forName("org.hsqldb.jdbcDriver");    
     conexao = DriverManager.getConnection("jdbc:hsqldb:file:C:\Arquivos de programas\JAVAHSQLDB\db\CLIENTES", "sa", "");  

// Nesse PATH eu já tentei de tudo e nada funciona:
// Já tentei:
// jdbc:hsqldb:file:CLIENTES", “sa”, “”);
// jdbc:hsqldb:file:C://Arquivos de programas//JAVAHSQLDB//db//CLIENTES", “sa”, “”);
// jdbc:hsqldb:file:\db\CLIENTES", “sa”, “”);
sentenca = conexao.createStatement();
resultadoConsulta = sentenca.executeQuery(consulta1);
while(resultadoConsulta.next()) {
clienteId = resultadoConsulta.getInt(“id_cliente”);
clienteNome = resultadoConsulta.getString(“nome_cliente”);
clienteTelefone = resultadoConsulta.getString(“telefone_cliente”);
idText.setText(String.valueOf(clienteId));
nomeText.setText(clienteNome);
telefoneText.setText(clienteTelefone);
}
sentenca.execute(“SHUTDOWN”);
conexao.close();
}
catch(ClassNotFoundException cnfe) { cnfe.printStackTrace(); }
catch(SQLException e) { e.printStackTrace(); }
}

public static void main(String[] args) {

  TelaPrincipal tp = new TelaPrincipal();    

}

}

O problema não seria na criação da tabela no hsqldb? Eu estou salvando o script com o mesmo nome da tabela… Alguma dica?

Qdo vc usa a conexão pelo NetBeans como a do printscreen ae , funciona ?

Qdo vc usa a conexão pelo NetBeans como a do printscreen ae , funciona ?[/quote]

Cara funcionou aqui…ufa…espero que vc tenha a mesma sorte.
Um abraço.

import javax.swing.*; 
import java.sql.*; 

public class TelaPrincipal { 

	JFrame mainTela = new JFrame("Principal."); 
	Connection conexao; 
	Statement sentenca; 
	ResultSet resultadoConsulta; 
	String consulta1 = "SELECT * FROM CLIENTE"; 
	int clienteId; 
	String clienteNome; 
	String clienteTelefone; 
	JTextField idText = new JTextField(4); 
	JTextField nomeText = new JTextField(35); 
	JTextField telefoneText = new JTextField(8); 
	JPanel camposPanel = new JPanel(); 

	public TelaPrincipal() { 

		mainTela.setExtendedState(JFrame.MAXIMIZED_BOTH); 
		mainTela.setVisible(true); 
		mainTela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		camposPanel.add(idText); 
		camposPanel.add(nomeText); 
		camposPanel.add(telefoneText); 
		mainTela.add(camposPanel); 

		try { 
			Class.forName("org.hsqldb.jdbcDriver"); 
			//Minha Conexão usada no teste *by dsfextreme*
                        //conexao = DriverManager.getConnection("jdbc:hsqldb:file:/Arquivos de programas//db/clientes","sa","");
                        
			//Sua Conexão......espero que funcione agora...........
                        //conexao = DriverManager.getConnection("jdbc:hsqldb:file:/Arquivos de programas//JAVAHSQLDB//db/CLIENTES", "sa", ""); 

			sentenca = conexao.createStatement(); 
			resultadoConsulta = sentenca.executeQuery(consulta1); 
			while(resultadoConsulta.next()) { 
			clienteId = resultadoConsulta.getInt("id_cliente"); 
			clienteNome = resultadoConsulta.getString("nome_cliente"); 
			clienteTelefone = resultadoConsulta.getString("telefone_cliente"); 
			idText.setText(String.valueOf(clienteId)); 
			nomeText.setText(clienteNome); 
			telefoneText.setText(clienteTelefone); 
		     } 
			
			sentenca.execute("SHUTDOWN"); 
			conexao.close(); 

                    } 
			catch(ClassNotFoundException cnfe) { cnfe.printStackTrace(); } 
			catch(SQLException e) { e.printStackTrace(); } 
		    } 

		    public static void main(String[] args) { 

		    TelaPrincipal tp = new TelaPrincipal(); 

                   } 

} 


Bom, o Banco de Dados existe e a Tabela também. Até mesmo no Explorer do NetBeans eu posso ver a tabela CLIENTES com suas colunas e valores inseridos nela. O problema acontece depois que minha aplicação em Java roda.

É alguma conexão com o BD que está incorreta.
Eu uso um caminho relativo como ensina um dos tutoriais que tenho lido.

conexao = DriverManager.getConnection(“jdbc:hsqldb:file:/db/CLIENTES”, “sa”, “”);

Mas no final, nada aparece nas caixas de texto.

O código completo da classe é:

import javax.swing.;
import java.sql.
;

public class TelaPrincipal {

JFrame mainTela = new JFrame(“Principal.”);
Connection conexao;
Statement sentenca;
ResultSet resultadoConsulta;
String consulta1 = “SELECT id_cliente, nome_cliente, telefone_cliente FROM CLIENTES”;
int clienteId;
String clienteNome;
String clienteTelefone;
JTextField idText = new JTextField(4);
JTextField nomeText = new JTextField(35);
JTextField telefoneText = new JTextField(8);
JPanel camposPanel = new JPanel();

public TelaPrincipal() {

  mainTela.setExtendedState(JFrame.MAXIMIZED_BOTH);
  mainTela.setVisible(true);
  mainTela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  camposPanel.add(idText);   
  camposPanel.add(nomeText);
  camposPanel.add(telefoneText);
  mainTela.add(camposPanel);
  
  try {
     Class.forName("org.hsqldb.jdbcDriver");    
     conexao = DriverManager.getConnection("jdbc:hsqldb:file:/db/CLIENTES", "sa", "");  
     sentenca = conexao.createStatement();   
     resultadoConsulta = sentenca.executeQuery(consulta1);
        while(resultadoConsulta.next()) {
           clienteId = resultadoConsulta.getInt("id_cliente");            
           clienteNome = resultadoConsulta.getString("nome_cliente");            
           clienteTelefone = resultadoConsulta.getString("telefone_cliente");            
           idText.setText(String.valueOf(clienteId));
           nomeText.setText(clienteNome);
           telefoneText.setText(clienteTelefone);
        }
        sentenca.execute("SHUTDOWN");
        conexao.close();   
  }
  catch(ClassNotFoundException cnfe) { cnfe.printStackTrace(); }
  catch(SQLException e) { e.printStackTrace(); }

}

public static void main(String[] args) {

  TelaPrincipal tp = new TelaPrincipal();    

}

}


E os erros que aparecem após encerrar a aplicação:

java.sql.SQLException: Table not found in statement [SELECT id_cliente, nome_cliente, telefone_cliente FROM CLIENTES]
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)
at TelaPrincipal.(TelaPrincipal.java:47)


Eu espero que a solução esteja próxima de ser encontrada.
Obrigado.

E para complicar, olha a mensagem que aparece quando eu coloco a url do banco de dados assim:

conexao = DriverManager.getConnection(“jdbc:hsqldb:file://db//CLIENTES”, “sa”, “”); // colocando “//” em vez de “/”

erro:

java.sql.SQLException: The database is already in use by another process: org.hsqldb.persist.NIOLockFile@1e421eac[file =\db\CLIENTES.lck, exists=false, locked=false, valid=false, fl =null]: java.io.FileNotFoundException: \db\CLIENTES.lck (O caminho da rede não foi encontrado)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.(Unknown Source)
at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
at org.hsqldb.jdbcDriver.connect(Unknown Source)

Alguém se arrisca a explicar o que está acontecendo? E porque não consigo configurar o caminho do banco de dados?
Até mais.

Se isso ajudar, está aqui o arquivo PROPERTIES do meu db…

#HSQL Database Engine
#Wed May 31 23:38:26 BRT 2006
hsqldb.script_format=0
runtime.gc_interval=0
sql.enforce_strict_size=false
hsqldb.cache_size_scale=8
readonly=false
hsqldb.nio_data_file=true
hsqldb.cache_scale=14
version=1.8.0
hsqldb.default_table_type=memory
hsqldb.cache_file_scale=1
hsqldb.log_size=200
modified=yes
hsqldb.cache_version=1.7.0
hsqldb.original_version=1.8.0
hsqldb.compatible_version=1.8.0