Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Filipe Rodrigues

Como Executar comando SQL com Java+ Hibernate

Recommended Posts

Boa noite a todos ... estou desenvolvendo uma pequena aplicação que precisa

receber dados de uma planilha em CSV então estou utilizando o seguinte comando SQL

 

load data infile 'C:/Clientes.csv ' 
  into table Temporario fields 
    terminated by ';' 
   lines terminated by'\n'
   ignore 1 lines 
     (Nome , Telefone , Endereco , UF ,
       )

 

Como faço para executar esse comando via aplicação JEE ?

 

tem como fazer com o NativeQuery ?

 

Lembrando : o motivo de importar via banco no caso MySQL e que eu posso trocar a interface com facilidade e que a planilha CSV vira de outra aplicação. e eu sou leigo no uso de JEE + Hibernate

 

Agradeço à atenção :lol:

Desculpe o encomodo :blush:

e aguardo resposta :cry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Supondo que você já tenha uma conexão estabelecida com o banco:

String sql = "load data infile 'C:/Clientes.csv ' into table Temporario fields terminated by ';' lines terminated by'\n' ignore 1 lines (Nome , Telefone , Endereco , UF ,)";
Statement stmt = connection.createStatement();
stmt.executeUpdate(sql);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vergil obrigado por responder :grin: o Statement que você citou seria algo assim ?

eu não tenho certeza :pinch:

 

 

 

import java.sql.DriverManager;
import java.sql.Connection;

import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;

   public class OdbcAtt {

String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String DBQ = "\\Pasta\\NomeFisicoDoBanco.MDB";
String url = "jdbc:mysql://localhost:3307/banco";
String username = "root";
String password = "123456";
Statement stmt = null;
ResultSet rs = null;

public void AttOla() {

	try {
	    Connection conn =   DriverManager.getConnection("jdbc:mysql://localhost:3307/banco?" +
		                                   "user=root&password=123456");
	    String sql = ""load data infile 'C:/Clientes.csv ' into table          Temporario fields terminated by ';' lines terminated by'\n' ignore 1 lines (Nome , Telefone , Endereco , UF ,)"; ";
	    Statement stmt = conn.createStatement();
	    stmt.executeUpdate(sql);
	    System.out.println("Executado  ");
	    } 
	    catch (SQLException ex) {
	    // handle any errors
	    System.out.println("SQLException: " + ex.getMessage());
	    System.out.println("SQLState: " + ex.getSQLState());
	    System.out.println("VendorError: " + ex.getErrorCode());
	    }


}
}

esse código não da erro mas não executa :cry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de recuperar a conexão registre o JDBC do MySQL.

try {
  Class.forName("com.mysql.jdbc.Driver");
  ...

 

A linha 23 está errada. "String sql = "..." Você está montando a String de forma errada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vergil mais uma vez muito obrigado pela ajuda :grin:

 

para Executar o código eu utilizei uma conexão JDBC

da seguinte forma :

++ bibliotecas ++++

import java.io.IOException;  
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

+++ Algorítimo ++++

  .
  . 
  .
 String filename = "C:/Clientes.csv"
System.out.println(filename); 
       // Responsta do print C:/Clientes.csv 
       if(filename != null)
       {
       	System.out.println("Entra o Endereco:"+filename);
                // Responsta do print C:/Clientes.csv
           String nfilename = ("load data infile'"+filename+"'into table temporario fields terminated by ';' lines terminated by'\n'  ignore 1 lines (Nome , Telefone , Endereco , UF)");
       	System.out.println("Modificado 1 :"+nfilename);
                      // Resposta do print  MOdificado 1 :load data infile'C:/Clientes.csv'into table temporario fields terminated by ';' lines terminated by'\n'  ignore 1 lines (Nome , Telefone , Endereco , UF)

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

       	Connection conn =  DriverManager.getConnection("jdbc:mysql://localhost:3307/bb","root", "123456");
       	conn.setAutoCommit(false);

       	Statement st = conn.createStatement();
       	System.out.println("Modificado 2 : "+nfilename);
       	st.executeUpdate(nfilename);
       	st.close();
       	conn.commit();
       	conn.close();

       }

 

Quando eu passo no st.executeUpdate ("load data infile'C:/Clientes.csv'into table temporario fields terminated by ';' lines terminated by'\n' ignore 1 lines (Nome , Telefone , Endereco , UF)"); ele funciona normalmente :rolleyes:

 

mas quando passo a String nfilename ele apresenta o seguinte erro :

java.sql.SQLException: File 'C:\ProgramData\MySQL\MySQL Server 5.5\data\Clientes.csv' not found (Errcode: 2);

 

Minha nova duvida e por que ele altera a String que eu passo por essa outra ?? e se eu passei uma String Gigantesca como ele localizou o "Clientes.csv" se eu passei ele no meio da String nfilename , e como eu faço para consertar esse erro ?? :wacko:

 

mais uma vez agradeço a atenção ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.