Duvida na hora de fazer o insert com HSQLDB

3 respostas
MarcusSaad

Bom pessoal, é o seguinte. Estou estagiando em uma empresa e estou tendo dificuldades com a parte de banco de dados.

Meu projeto timidamente implementa DAO.
Beans : Account, CompanyAccount(extends Account), BancoDeDados)
DAO : CompanyAccountDAO, TransacoesCA
Negocios : CompanyAccountValidacoes

O que está acontecendo é que não consigo inserir dados, sempre tomo null pointer! Queria uma ajuda com um modelo ou uma explicação de como fazer a inserção usando Statement &| PreparedStatement.

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class BancoDeDados {

	private static Connection conexao;
	private static Statement stmt;
	private static ResultSet rs;
	private static ResultSetMetaData rsMD;

	public void conectar() {
		try {
			Class.forName("org.hsqldb.jdbcDriver");
			conexao = DriverManager.getConnection("jdbc:hsqldb:Banco\\banco",
					"sa", "");
			stmt = conexao.createStatement();
			System.out.print("Conectado!");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
package DAO;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

import Beans.CompanyAccount;
import Beans.BancoDeDados;

public class TransacoesCA implements CompanyAccountDAO {   

	public CompanyAccount create() {
		return new CompanyAccount();
	}

	public void insert(CompanyAccount ca, int id, int fk, String username,
			String pwd, String nome, Date data, int tipoConta, String cnpj) {
		
             //MINHA DIFICULDADE ESTA NESSA PARTE!
               BancoDeDados bd = new BancoDeDados();
		try {
			Statement stmt = null;
			bd.conectar();
			stmt.executeQuery("INSERT into companyaccount values (" + id + ","
					+ fk + ", " + username + ", " + pwd + ", " + nome + ", "
					+ data + ", " + tipoConta + ", " + cnpj + ")");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassCastException e) {
			e.printStackTrace();
		}

	}

	public void update(CompanyAccount ca, String username) {
      //MINHA DIFICULDADE ESTA NESSA PARTE!
		Connection con = null;
		BancoDeDados bd = new BancoDeDados();
		try {

			st.executeUpdate("UPDATE companyaccount SET id='" + ca.getId()
					+ "', '" + ca.getName() + "' WHERE username='" + username
					+ "'");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassCastException e) {
			e.printStackTrace();
		}

	}

	public void delete(CompanyAccount ca, int id) {
 //MINHA DIFICULDADE ESTA NESSA PARTE!
	}

	public void delete(int Username, CompanyAccount ca) {
	 //MINHA DIFICULDADE ESTA NESSA PARTE!	
                Connection con = null;
		BancoDeDados bd = new BancoDeDados();
		try {
			con = bd.conectar();
			Statement st = con.createStatement();
			st.executeUpdate("DELETE FROM companyaccount WHERE username=("
					+ ca.getUserName() + ")");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassCastException e) {
			e.printStackTrace();
		}

	}

}
Na Main, eu quero inserir um objeto do tipo CompanyAccount no banco
import java.sql.Date;
import java.sql.SQLException;

import Beans.BancoDeDados;
import Beans.CompanyAccount;
import DAO.TransacoesCA;

public class Principal {

	public static void main(String args[]) throws SQLException {
		
	BancoDeDados bd = new BancoDeDados();
	
	bd.conectar();
	CompanyAccount ca = new CompanyAccount();
	TransacoesCA tca = new TransacoesCA();
	tca.insert(ca, 1, 2, "joaozinho", "sdas", "joao", null, 1, "[CPF removido]");
	}

3 Respostas

MarcusSaad

O problema com a conexão eu consegui resolver, era necessario retornar a mesma na chamada do método de abertura do banco.

O problema que tenho agora é o seguinte :

java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: COMPANYACCOUNT at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 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 DAO.TransacoesCA.insert(TransacoesCA.java:22) at Principal.main(Principal.java:12) Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: COMPANYACCOUNT at org.hsqldb.error.Error.error(Unknown Source) at org.hsqldb.error.Error.error(Unknown Source) at org.hsqldb.SchemaManager.getTable(Unknown Source) at org.hsqldb.ParserDQL.readTableName(Unknown Source) at org.hsqldb.ParserDQL.readSimpleRangeVariable(Unknown Source) at org.hsqldb.ParserDML.compileInsertStatement(Unknown Source) at org.hsqldb.ParserCommand.compilePart(Unknown Source) at org.hsqldb.ParserCommand.compileStatements(Unknown Source) at org.hsqldb.Session.executeDirectStatement(Unknown Source) at org.hsqldb.Session.execute(Unknown Source) ... 4 more

icaromagnago

Quando vc utiliza HSQLDB no modo standalone, ele permite somente uma conexão por vez. Certifique-se que vc não está com a interface do HSQLDB aberta.

Anime

Oi,

Não encontra o COMPANYACCOUNT, verifique se está escrito correto… :wink:

Criado 8 de agosto de 2011
Ultima resposta 17 de ago. de 2011
Respostas 3
Participantes 3