Como faço pra salvar essa arraylist no banco de dados?
eu estava pensando em criar 5 if’s para cada coluna e um indicador de indici,
quando ele passase por todas as colunas da linha o valor voltava a ser 0.
@throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException {
// TODO Auto-generated method stub
// teste para leitura do arquivo txt
// gerado pelo aplicativo do macromedidor
InputStream is = new FileInputStream("dados2.txt");
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
ArrayList<String> dados = new ArrayList<String>();
String linha = br.readLine(); // primeira linha
// String cabecalho1 = "Nº Aquisição Horário Data Pressão [mca]";
String cabecalho2 = "Num. Registro Horário Data Canal 1 Canal 2";
while (linha != null) { // inicia laço
if (linha.equalsIgnoreCase(cabecalho2)) { // quando encontra a linha do cabeçalho ele para
break;
}
linha = br.readLine();
}
linha = br.readLine(); // pega a proxima linha
while (linha != null) {
dados.add(linha); // armazena as linhas em uma lista
linha = br.readLine();
}
br.close();
for (int i = 0; i < dados.size(); i++) {
String[] separados = dados.get(i).split("\\s+"); // retira os espaços entre os dados deixando apenas um.
for (String separado : separados) {
System.out.print(separado + " "); // teste para ver se os dados esta passando
}
System.out.println();
}
}
}[/code]
OBS.: esse codigo é um teste, quando estiver pronto vou organiza-lo e separar os metodos
Antes do “FOR” da linha 38 vc deve abrir a transação com o banco de dados
Linha a linha vc deve fazer o insert, pode ser na linha 46
Depois da linha 48 (depois do FOR), deve fazer o commit da transação.
Provável que tenha transformar o “array” para “Byte array” e jogar ele para um campo BLOB do banco de dados.
Que pode também é transformar o arquivo direto para “Byte array”. org.apache.commons.io.IOUtils.toByteArray()
1 - Crie uma entidade que represente as propriedades do que arquivo contem.
2 - Tokenize a linha é set Valores para cada atributo correspondente que você criou na entidade.
3 - Adicione a entidade ao ArrayList.
[code]
Dados d = new Dados();
new Conexao().getConnection();
int x = 0;
for (int i = 0; i < dados.size(); i++) {
String[] separados = dados.get(i).split("\\s+"); // retira os espaços entre os dados deixando apenas um.
for (String separado : separados) {
if (x == 0) {
d.setNum(separado);
}
if (x == 1) {
d.setHora(separado);
}
if (x == 2) {
d.setData(separado);
}
if (x == 3) {
d.setCanal1(separado);
}
if (x == 4) {
d.setCanal2(separado);
}
x++;
}
}[/code]