Não consigo inserir no banco aparece só esta mensagem, já debuguei, mas não mostra nada o processo é encerrado na pilha de forma abrupta, já testei a conexão e está ok, já teste o testa listagem e funciona perfeitamente, só consigo inserir pelo driver manager do HQSQLDB:
Informe o Nome:
Cezar
Informe a Descrição:
Teste
Abrindo conexão com o banco de dados
Segue minha classe de inserção:
package br.com.crud.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
/**
* <b>Classe criada para testar inserções no banco HQSQLDB</b>
*
* @author <i>RCARAUJO - Renato Cézar Silva de Araújo.</i>
* @category Testes
* @since 04/02/2020 - 11:27hs
* @version 1.0
*/
public class TestaInsercao {
private static String nome;
private static String descricao;
private static String entrada;
private static Scanner ler = new Scanner(System.in);
public static void main(String[] args) throws SQLException {
System.out.println("Informe o Nome: ");
setNome(getLer().nextLine());
System.out.println("Informe a Descrição: ");
setDescricao(getLer().nextLine());
Connection connection = Database.getConnection();
String sql = "insert into produto(nome, descricao) values (?, ?)";
PreparedStatement statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
statement.setString(1, getNome());
statement.setString(2, getDescricao());
ResultSet generatedKeys = statement.getGeneratedKeys();
while (generatedKeys.next()) {
long id = generatedKeys.getLong("id");
System.out.println("id gerado: " + id);
}
generatedKeys.close();
statement.close();
connection.close();
}
public static String getNome() {
return nome;
}
public static void setNome(String nome) {
TestaInsercao.nome = nome;
}
public static String getDescricao() {
return descricao;
}
public static void setDescricao(String descricao) {
TestaInsercao.descricao = descricao;
}
public static String getEntrada() {
return entrada;
}
public static void setEntrada(String entrada) {
TestaInsercao.entrada = entrada;
}
public static Scanner getLer() {
return ler;
}
public static void setLer(Scanner ler) {
TestaInsercao.ler = ler;
}
}
Minha classe DataBase:
package br.com.crud.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Database {
public static Connection getConnection() throws SQLException {
System.out.println("Abrindo conexão com o banco de dados");
Connection connection = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/loja-virtual", "SA", "");
return connection;
}
}
Segue minha classe TestaListagem que funciona e consegue conectar ao banco:
package br.com.crud.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestaListagem {
public static void main(String[] args) throws SQLException {
Connection connection = Database.getConnection();
Statement statement = connection.createStatement();
boolean resultado = statement.execute("select * from Produto");
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String nome = resultSet.getString("nome");
String descricao = resultSet.getString("descricao");
System.out.println("id= " + id + ", nome= " + nome + ", descricao= " + descricao);
}
resultSet.close();
statement.close();
connection.close();
}
}