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?