[MySQL][Jar] Problema fora da IDE

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;

Executei a classe de conexão na IDE Eclipse, funcionou corretamente.

Qual a versão do banco e do conector?

Nos testes que eu fiz, usei o conector mysql-connector-java-5.1.17-bin.jar com o banco MySql 5.5.

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.1.54-1ubuntu4 (Ubuntu)

Connector: mysql-connector-java-5.1.17

dentro da IDE funciona perfeito, ele salva as coisas no banco e tudo mais, problema ta sendo fora dela!

Mudei um pouco o codigo do ConnectionDataBase para debuggar melhor, ele entrou no :
catch(SQLException)

e deu os seguintes erros agora

Exception in thread “main” java.lang.NullPointerException
at cadastro.dao.DadosDao.findDados(DadosDao.java:44)
at cadastro.controller.DadosController.listaDados(DadosController.java:68)
at cadastro.Principal.(Principal.java:33)
at cadastro.Cadastro.main(Cadastro.java:12)

Vou colocar os trechos importantes do codigo

[color=red]DadosDao (trecho findDados por volta da linha 44)[/color]

[code]public List findDados() throws SQLException
{
List dadoss = new ArrayList();

    String select = "SELECT * FROM dados";

    PreparedStatement stmt = getConnection().prepareStatement(select); //Linha 44
    ResultSet rs = stmt.executeQuery();

[/code]

[color=red]DadosController(trecho listaDados, por volta da linha 68)[/color]

[code]public List listaDados()
{
DadosDao dao = new DadosDao();
try
{
return dao.findDados(); //Linha 68
}
catch (SQLException e)
{

        JOptionPane.showMessageDialog(null, "Problemas ao localizar contato\n" + e.getLocalizedMessage());

    }
    
    return null;
    
}[/code]

[/color]Principal (por volta da linha 33):[/color]

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;