Leitura de Arquivos + JDBC

Estou criando um “dicionário” em Java. A fonte de dados é um arquivo .txt e devo armazenar as palavras em banco de dados (estou utilizando HSQLDB).
Classe Principal:
public static void main(String[] args) {
BancoDados objAbrirConexao = new BancoDados();
objAbrirConexao.iniciarConexao();

    AbrirArquivo objAbrirArquivo = new AbrirArquivo();
    objAbrirArquivo.start();
}

Classe para Banco de Dados:

public class BancoDados {
public Connection conexao = null;
public String url = “”;
public Statement statement = null;
public ResultSet result = null;

public void iniciarConexao() {
    url = "jdbc:hsqldb:hsql://localhost/myServerDB";
    
    try {
        Class.forName("org.hsqldb.jdbcDriver");
        //JOptionPane.showMessageDialog(null, "Identificou o driver.");
        conexao = DriverManager.getConnection(url, "sa", "");
        //JOptionPane.showMessageDialog(null, "Conectado.");
        statement = conexao.createStatement();
    } catch (Exception e) {
        System.out.println("ERRO! Falha ao carregar HSQLDB Server.");
        e.printStackTrace();
        return;
    }
}

public void Armazenar(String texto) {
    try {
        statement.execute("INSERT INTO Palavras2 (Sentenca) VALUES ('" + texto + "');");
        statement.executeUpdate("SHUTDOWN");
        System.out.println(texto);
    } catch (Exception e) {
        System.out.println("ERRO! Falha ao fazer o armazenamento da palavra.");
        e.printStackTrace();
        return;
    }
}

public void CriarStatement() {
    url = "jdbc:hsqldb:hsql://localhost/myServerDB";
    
    try {
        Class.forName("org.hsqldb.jdbcDriver");
        conexao = DriverManager.getConnection(url, "sa", "");
        statement = conexao.createStatement();
    } catch (Exception e) {
        System.out.println("ERRO! Falha ao criar atualização.");
        e.printStackTrace();
        return;
    }
}

Classe para Arquivos:
public void start() {
Scanner ler = new Scanner(System.in);

    try {
        FileReader nomeArq = new FileReader("teste.txt");
        BufferedReader lerArq = new BufferedReader(nomeArq);
        
        System.out.printf("Palavras adicionadas ao dicionário:\n");
        
        String linha = lerArq.readLine();
        
        while (linha != null) {
            String[] palavras = linha.split("(\\s|\\p{Punct})+");
            
            BancoDados objArmazenar = new BancoDados();
            for (String palavra : palavras) {
                objArmazenar.CriarStatement();
                objArmazenar.Armazenar(palavra);
            }
            
            linha = lerArq.readLine();
        }
        
        nomeArq.close();
    } catch (Exception e) {
        System.err.printf("Erro na abertura do arquivo: teste.txt.");
        e.getMessage();
    }
    
    System.out.println();
}

O problema é o seguinte: ele só armazena a primeira palavra do arquivo. As outras ele sempre dá erro, não executa o Statement. Alguém pode me ajudar, por favor?

Só pra constar, já achei o erro. Se alguém, algum dia, tiver o mesmo erro besta que o meu:
O “Shutdown” não pode estar ali onde coloquei, ele atualiza e finaliza a sessão de conexão. :smiley:

Método com letra maiúscula.
Concatenando sql.
Fechando buffer dentro do try.
Conexão aberta.
Refatora isso ai :slight_smile: