Pessoal, tenho uma classe que faz tudo de Banco, dentre outras cosias faz um insert com os dados pegos dos campos de uma tela Swing.
Porém, a query montada e executada pelo PreparedStatement me dá esse erro :
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)’ at line 1
Mas a query gerada é essa (### dei um printf no PreparedStatement ###):
com.mysql.jdbc.JDBC4PreparedStatement@bfea1d: insert into TAXAS(stanvisa,stzerada,stdesratizacao,stfunapol,stfunmov,stfarol,stpsc,nmnavio,nmlocal,dtanvisa,dtzerada,dtdesratizacao,dtfunapol,dtfunmov,dtfarol,dtpsc,dteta,comentario) values (‘N/A’,‘N/A’,‘N/A’,‘N/A’,‘N/A’,‘N/A’,‘N/A’,‘Fernando’,'Rio ',‘2008-02-20’,‘2008-02-20’,‘2008-02-20’,‘2008-02-20’,‘2008-02-20’,‘2008-02-20’,‘2008-02-20’,‘2008-02-20’,‘aaaa’)
E se pego essa query gerada, e executo na mão no Mysql, ela executa numa boa. Já perdi 2 dias nisso. Alguem tem alguma idéia ?
Vou colocar a classe:
public class Banco {
public static Connection getConnection(){
String url = "jdbc:mysql://localhost:3306/pheter";
String username = "root";
String password = " ";
try {
System.out.println("url : "+url + " username: " + username + " password: "+password);
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection) DriverManager.getConnection(url,username,password);
System.out.println("Conectado");
return con;
}catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
return null;//Olhar este retorno
}catch (ClassNotFoundException ex) {
ex.printStackTrace();
return null;
}
}
public static Date formataData(String dt){
java.sql.Date day= null;
if(dt.trim().length() == 10){
String dat;
String a = dt.substring(0, 2);
String b = dt.substring(3, 5);
String c = dt.substring(6, 10);
dat = c + "-" + b + "-" + a ;
day = java.sql.Date.valueOf(dat);
return day;
}else{
return day;
}
}
public static void insertNavio(Navio n) {
java.sql.Date anvisa = (java.sql.Date) formataData(n.getDtanvisa());
java.sql.Date zerada = (java.sql.Date) formataData(n.getDtzerada());
java.sql.Date desratizacao = (java.sql.Date) formataData(n.getDtdesratizacao());
java.sql.Date funapol = (java.sql.Date) formataData(n.getDtfunapol());
java.sql.Date funmov = (java.sql.Date) formataData(n.getDtfunmov());
java.sql.Date farol = (java.sql.Date) formataData(n.getDtfarol());
java.sql.Date psc = (java.sql.Date) formataData(n.getDtpsc());
java.sql.Date eta = (java.sql.Date) formataData(n.getDteta());
try{
Connection con = getConnection();
String sqlInsert= "insert into TAXAS(stanvisa,stzerada,stdesratizacao,stfunapol,stfunmov,stfarol,stpsc,nmnavio,nmlocal," +
"dtanvisa,dtzerada,dtdesratizacao,dtfunapol,dtfunmov,dtfarol,dtpsc,dteta,comentario) " +
"values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
java.sql.PreparedStatement prpst = con.prepareStatement(sqlInsert);
//String´s
prpst.setString (1, n.getStanvisa());
prpst.setString (2, n.getStzerada());
prpst.setString (3, n.getStdesratizacao());
prpst.setString (4, n.getStfunapol());
prpst.setString (5, n.getStfunmov());
prpst.setString (6, n.getStfarol());
prpst.setString (7, n.getStpsc());
prpst.setString (8, n.getNome());
prpst.setString (9, n.getLocal());
//Dates
prpst.setDate(10, anvisa);
prpst.setDate (11, zerada);
prpst.setDate (12, desratizacao);
prpst.setDate (13, funapol);
prpst.setDate (14, funmov);
prpst.setDate (15, farol);
prpst.setDate (16, psc);
prpst.setDate(17, eta);
prpst.setString (18, n.getComentario());
System.out.println("### "+ prpst +" ###");
prpst.executeUpdate(sqlInsert);
prpst.close();
con.close();
JOptionPane.showMessageDialog(null,"Navio e Taxas salvo com sucesso");
} catch(SQLException ex){
ex.printStackTrace();
}
}
}