static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DATABASE_URL = "jdbc:mysql://localhost/db";
Connection connection = null; // gerencia a conexão
Statement statement = null; // instrução de consulta
public ResultSet resultset = null;
public void conectar(){
try {
Class.forName(JDBC_DRIVER);
// estabelece conexão com o banco de dados
connection = DriverManager.getConnection( DATABASE_URL, "root", "root" );
} catch (ClassNotFoundException ex) {
} catch (SQLException ex) {
}
}
public void desconectar(){
try
{
statement.close();
connection.close();
}
catch ( Exception exception )
{
exception.printStackTrace();
}
}
public void update(String sql){
try {
// cria Statement para consultar banco de dados
statement = connection.createStatement();
statement.executeUpdate(sql);
} catch (SQLException ex) {
}
}
public void select(String sql){
try {
// cria Statement para consultar banco de dados
statement = connection.createStatement();
resultset = statement.executeQuery(sql);
} catch (SQLException ex) {
}
}
}[/code]
La no JFrame, para iniciar e conectar faço o seguinte:
[code]public class CadastrarProduto extends javax.swing.JInternalFrame {
Conexao conexao;
/** Creates new form CadastrarProduto */
public CadastrarProduto(){
initComponents();
desabilitarComponentes();
conexao = new Conexao();
conexao.conectar();
}[/code]
E depois no botao Primeiro ou Proximo, faço o seguinte:
[code]private void btn_PrimeiroActionPerformed(java.awt.event.ActionEvent evt) {
try {
conexao.select(“SELECT * FROM ce01”);
while (conexao.resultset.first()) {
txt_Codigo.setText(conexao.resultset.getString(“id”));
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, “Ocorreu um erro inesperado ao selecionar o primeiro registro!”);
}
}
Também pode tentar ver se a configuração de banco está correto, estás usando um Mysql, geralmente o usuário e senha padrão do Mysql e root e a senha é vazia. Podes dar um trace no código abaixo.
Experimente deixar o terceiro parâmetro de getConnection da linha 24 da classe Conexao como “”. O que pode estar acontecendo é que você não está nem conseguindo conectar com o banco de dados.
...
public void conectar(){
try {
Class.forName(JDBC_DRIVER);
// estabelece conexão com o banco de dados
connection = DriverManager.getConnection( DATABASE_URL, "root", "" );
} catch (ClassNotFoundException ex) {
} catch (SQLException ex) {
//Trace aqui
ex.printStackTrace();
}
}
...
Aliás, durante a programação, para fins de debug é interessante ver os exceptions para ver como a aplicação está se comportando.
wellington.nogueira, no caso entao voce diz que eu nao estou conseguindo ver nada com aquele select? wellington, estou começando ainda nessa area de banco de dados. O que é stacktrace?
Sobre o usuario e senha, esta correto, é root e root mesmo.
[quote=blackfalcon]wellington.nogueira, no caso entao voce diz que eu nao estou conseguindo ver nada com aquele select? wellington, estou começando ainda nessa area de banco de dados. O que é stacktrace?
Sobre o usuario e senha, esta correto, é root e root mesmo.
Abraços
[/quote]
Depois do catch(Exceção variavel) {
variavel.printStackTrace();
}
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at Utilitarios.Conexao.conectar(Conexao.java:21)
at Cadastros.CadastrarProduto.<init>(CadastrarProduto.java:23)
at Retaguarda.jMenuItem10ActionPerformed(Retaguarda.java:162)
at Retaguarda.access$100(Retaguarda.java:9)
at Retaguarda$3.actionPerformed(Retaguarda.java:116)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1216)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1257)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Eu so nao entendi porque eu instalei o MySQL connector aqui
Tinha feito um esquema no NetBeans, porem, nao funcionou. Depois, eu procurei aqui no forum novamente e enfim achei uma solução. Foi copiar diretamente para o jre/lib/ext e entao funcionou!
Nao sei se tem algum problema fazer isso, mas pelo menos agora nao esta dando mais o erro ne rsrs.
Porem, agora na hora que eu vou pesquisar no db, o programa trava. Bem, menos mal, conectando esta, agora so tenho que achar o erro que esta fazendo ele travar.
Provavelmente seu resultSet deve ter ficado nulo devido a uma exceção do tipo SQLException que vc “tratou” não fazendo nada…
(como vc não postou o stacktrace, não posso confirmar mas se é só qdo clica no botão, provável que sim.
try {
// cria Statement para consultar banco de dados
statement = connection.createStatement();
resultset = statement.executeQuery(sql);
} catch (SQLException ex) {
//Coloque algo aqui... ou não trate com try-catch
}
Dentro deste bloco try, conexao.select não é tratado (ele não dispara SQLException) e poderia ficar fora (exceto se fosse removido o try-catch de dentro do método select.
try {
conexao.select("SELECT * FROM ce01");
while (conexao.resultset.first()) {
txt_Codigo.setText(conexao.resultset.getString("id"));
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro inesperado ao selecionar o primeiro registro!");
}
Você não conseguiu uma Connection válida (algum erro de configuração de acesso) seja no nome do JDBC, seja na url da base de dados ou usuário/senha.
Como vc não tratou corretamente as exceções, não sei se é isso, aí, quando vc faz connection.createStatement(), se connection for null, dispara NullPointerException
Ou então, vc têm a connection e conseguiu o statement, mas ao executar a instrução, houve algum erro (sintaxe, por exemplo) que o SQLException poderia lhe informar, mas novamente não foi tratado corretamente. Assim o resultSet continua nulo.
Ao tentar ler o resultSet, o mesmo está nulo disparando o NullPointerException.
Faz assim:
} catch (SQLException e) {
e.printStackTRace(); //Vai gerar uma saída com erro (stackTrace)
}[/code]
StackTrace é uma saída do sistema que mostra o erro ocorrido e a sequência de métodos executados antes do erro.
Dessa forma, é possível tentar identificar onde o erro ocorreu.
É algo parecido com isso:
[code]Exception in thread "main" java.lang.NullPointerException: Error
at FileTestes.teste(FileTestes.java:136)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.teste(FileTestes.java:138)
at FileTestes.main(FileTestes.java:144)