Meu código funciona legal dentro da IDE (NetBeans) porem quando eu crio o arquivo .jar e executo obtenho os seguintes erros:
Exception in thread “main” java.lang.RuntimeException: com.mysql.jdbc.exceptions.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
at cadastro.dao.ConnectionDataBase.getConnection(ConnectionDataBase.java:37)
at cadastro.dao.GenericDao.(GenericDao.java:17)
at cadastro.dao.DadosDao.(DadosDao.java:14)
at cadastro.controller.DadosController.listaDados(DadosController.java:65)
at cadastro.Principal.(Principal.java:33)
at cadastro.Cadastro.main(Cadastro.java:12)
Caused by: com.mysql.jdbc.exceptions.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
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1049)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)
at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1881)
at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3496)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2385)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:792)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:377)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(libgcj.so.11)
at java.sql.DriverManager.getConnection(libgcj.so.11)
at cadastro.dao.ConnectionDataBase.getConnection(ConnectionDataBase.java:27)
…5 more
Vou Colocar o código das Classes que aparentemente estão problemáticas
[color=red]Connection DataBase:[/color]
[code]package cadastro.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionDataBase {
private static final String URL_MYSQL = "jdbc:mysql://localhost:3306/hospital";
private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
private static final String USER = "root";
private static final String PASS = "lsa1234";
public static Connection getConnection()
{
System.out.println(“Conectando ao Banco de Dados”);
try
{
//Carrega o Driver do Banco
Class.forName(DRIVER_CLASS);
return DriverManager.getConnection(URL_MYSQL, USER, PASS);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
throw new RuntimeException(e); //linha 37
}
return null;
}
}[/code]
[color=red]
Generic Dao[/color]
[code]package cadastro.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public abstract class GenericDao
{
private Connection connection;
protected GenericDao()
{ //linha 17
this.connection = ConnectionDataBase.getConnection();
}
protected Connection getConnection()
{
return connection;
}
protected void save(String insertSql, Object... parametros) throws SQLException
{
PreparedStatement pstmt = getConnection().prepareStatement(insertSql);
for (int i = 0; i < parametros.length; i++)
{
pstmt.setObject(i+1, parametros[i]);
}
pstmt.execute();
pstmt.close();
}
protected void update(String updateSql, Object id, Object... parametros) throws SQLException {
PreparedStatement pstmt = getConnection().prepareStatement(updateSql);
for (int i = 0; i < parametros.length; i++) {
pstmt.setObject(i+1, parametros[i]);
}
pstmt.setObject(parametros.length + 1, id);
pstmt.execute();
pstmt.close();
}
protected void delete(String deleteSql, Object... parametros) throws SQLException {
PreparedStatement pstmt = getConnection().prepareStatement(deleteSql);
for (int i = 0; i < parametros.length; i++) {
pstmt.setObject(i+1, parametros[i]);
}
pstmt.execute();
pstmt.close();
}
}[/code]
[color=red]Dados Dao[/color]
[code]package cadastro.dao;
import cadastro.model.Dados;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
//linha 14
public class DadosDao extends GenericDao
{
public void salvar(Dados dados) throws SQLException
{
String insert = “INSERT INTO dados(nome, idade, data_nascimento,alergias, peso,altura,imagem)”
+ “VALUES(?,?,?,?,?,?,?)”;
save(insert, dados.getNome(), dados.getIdade(), dados.getDtNascimento(),dados.getAlergias(), dados.getPeso(), dados.getAltura(),dados.getImagem());
}
public void alterar(Dados dados) throws SQLException
{
String update = "UPDATE dados " +
"SET nome = ?, idade = ?, data_nascimento = ?, alergias = ?, peso = ?, altura=?, imagem =? " +
"WHERE id = ?";
update(update, dados.getNome(), dados.getIdade(), dados.getDtNascimento(),dados.getAlergias(), dados.getPeso(), dados.getAltura(), dados.getImagem());
}
public void excluir(long id) throws SQLException
{
String delete = "DELETE FROM dados WHERE id = ?";
delete(delete, id);
}
public List<Dados> findDados() throws SQLException
{
List<Dados> dadoss = new ArrayList<Dados>();
String select = "SELECT * FROM dados";
PreparedStatement stmt = getConnection().prepareStatement(select);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Dados dados = new Dados();
dados.setId(rs.getLong("id"));
dados.setNome(rs.getString("nome"));
dados.setIdade(rs.getString("idade"));
dados.setDtNascimento(rs.getDate("data_nascimento"));
dados.setAlergias(rs.getString("alergias"));
dados.setPeso(rs.getString("peso"));
dados.setAltura(rs.getString("altura"));
dados.setImagem(rs.getString("imagem"));
dadoss.add(dados);
}
rs.close();
stmt.close();
return dadoss;
}
public Dados findByName(String nome) throws SQLException {
String select = "SELECT * FROM dados WHERE nome = ?";
Dados dados = null;
PreparedStatement stmt = getConnection().prepareStatement(select);
stmt.setString(1, nome);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
dados = new Dados();
dados.setId(rs.getLong("id"));
dados.setNome(rs.getString("nome"));
dados.setIdade(rs.getString("idade"));
dados.setDtNascimento(rs.getDate("data_nascimento"));
dados.setAlergias(rs.getString("alergias"));
dados.setAltura(rs.getString("altura"));
dados.setPeso(rs.getString("peso"));
dados.setImagem(rs.getString("imagem"));
}
rs.close();
stmt.close();
return dados;
}
}[/code]
[color=red]Dados Controller[/color]
[code]package cadastro.controller;
import cadastro.dao.DadosDao;
import cadastro.model.Dados;
import javax.swing.;
import java.sql.Date;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.awt.Component.;
import java.awt.;
import java.awt.Image.;
public class DadosController
{
private Date formatarData(String data) throws ParseException
{
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
return new Date( formatter.parse(data).getTime() );
}
public void salvar(String nome, String idade, String dtNascimento,String alergias, String peso, String altura,String imagem) throws SQLException, ParseException
{
Dados dados = new Dados();
dados.setNome(nome);
dados.setIdade(idade);
dados.setDtNascimento(formatarData(dtNascimento));
dados.setAlergias(alergias);
dados.setAltura(altura);
dados.setPeso(peso);
dados.setImagem(imagem);
new DadosDao().salvar(dados);
}
public void alterar(long id, String nome, String idade, String dtNascimento,String alergias, String peso, String altura,String imagem) throws ParseException, SQLException
{
Dados dados = new Dados();
dados.setId(id);
dados.setNome(nome);
dados.setIdade(idade);
dados.setDtNascimento(formatarData(dtNascimento));
dados.setAlergias(alergias);
dados.setAltura(altura);
dados.setPeso(peso);
dados.setImagem(imagem);
new DadosDao().alterar(dados);
}
public List<Dados> listaDados()
{
DadosDao dao = new DadosDao(); //linha 65
try
{
return dao.findDados();
}
catch (SQLException e)
{
JOptionPane.showMessageDialog(null, "Problemas ao localizar contato\n" + e.getLocalizedMessage());
}
return null;
}
public void excluir(long id) throws SQLException
{
new DadosDao().excluir(id);
}
public Dados buscaContatoPorNome(String nome) throws SQLException
{
DadosDao dao = new DadosDao();
return dao.findByName(nome);
}
//Esta função ainda não esta finalizada
public void mostrarFoto(long id, String imagem){
Image image = null;
Toolkit toolkit = Toolkit.getDefaultToolkit();
image = toolkit.getImage(imagem);
}
}[/code]
Principal (nao irei colocar o codigo pois aqui é apenas a criação do JFrame, mas vou colocar até a linha que contem o erro)
package cadastro;
import cadastro.model.Dados;
import cadastro.controller.DadosController;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.io.*;
import javax.imageio.*;
public class Principal extends JFrame
{
private JLabel lbNome, lbIdade, lbDtNascimento, lbAlergias, lbAltura, lbPeso, lbImagem;
private JTextField txtNome, txtIdade, txtDtNascimento,txtAlergias, txtAltura, txtPeso, txtLocalizar, txtImagem;
private JFileChooser flImagem;
private JButton btnSalvar, btnAlterar, btnExcluir, btnClear, btnLocalizar;
private JButton btnPrimeiro, btnProximo, btnAnterior, btnUltimo, btnAbrir;
private JButton btnCarregar;
private List<Dados> contatoList = new DadosController().listaDados(); //linha 33
private int registroAtual = 0;