Olá pessoal! Novamente preciso de uma mãozinha nas linhas de código…
Fiz uma classe Conexao e fiz uma tela que instância esta classe e verifica se foi realizada a conexao no banco. Dêem uma olhadinha no código:
Classe Conexao:
[code]
package jteste;
import java.sql.*;
public class Conexao {
String JDBC_DRIVER = “oracle.jdbc.driver.OracleDriver”;
String DB_URL = “jdbc:oracle:thin:@localhost:1521:XE”;
String DB_USER = “berto”;
String DB_PASS = “berto”;
Connection conn;
String situacao;
/** Creates a new instance of Conexao */
public Conexao() {
conn = null;
situacao = null;
}
public void Conecta () {
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
System.out.println("Funfou a conexão");
situacao = "Funfou a conexão";
conn.close();
}
catch (Exception e) {
e.printStackTrace(System.out);
System.out.println("NÃO Funfou a conexão");
situacao = "Não funfou a conexão";
}
}
}[/code]
E este é código do formulário:
package jteste;
import java.awt.Label;
public class JPrincipal extends javax.swing.JFrame {
public JPrincipal() {
initComponents();
setBounds(200,200,500,350);
}
// <editor-fold defaultstate="collapsed" desc=" Código Gerado ">
private void initComponents() {
jButton1 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1);
jButton1.setBounds(230, 80, 150, 23);
jLabel1.setFont(new java.awt.Font("Arial", 0, 14));
jLabel1.setText("jLabel1");
getContentPane().add(jLabel1);
jLabel1.setBounds(30, 20, 220, 50);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Conexao con = new Conexao ();
con.Conecta();
jLabel1.setText(con.situacao);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JPrincipal().setVisible(true);
}
});
}
// Declaração de variáveis - não modifique
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
// Fim da declaração de variáveis
}
O que acontece é que no formulário a Label1 (que recebe a variável situacao só recebe “Não funfou a conexão”… eu imagino que na classe conexao no metódo conecta ele só cai no catch, fazendo a variável situacao receber “Não funfou a conexão”…
Por favor se alguém puder me ajudar, agradeço desde já.
berto
Uma dica…
Não chame uma variável como você fez ali, encapsule-a.
Faça assim…
Classe Conexao
String mSituacao;
public void setSituacao(String situacao){
mSituacao = situacao;
}
public String getSituacao(){
return mSituacao;
}
No método Conecta, troque situacao por this.setSituacao(“Funfou”);
E na classe JPrincipal faça o seguinte:
con.getSituacao();
Taí uma sugestão…
Abraços.
Obrigado pela dica ckornell, mas continua não funcionando…
Pessoal quando eu executo o Formulário no NetBeans E clico no Botão na parte de baixo ele dá a seguinte mensagen:
init:
deps-jar:
compile-single:
run-single:
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:XE
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at jteste.Conexao.Conecta(Conexao.java:28)
at jteste.JPrincipal.jButton1ActionPerformed(JPrincipal.java:41)
at jteste.JPrincipal.access$000(JPrincipal.java:5)
at jteste.JPrincipal$1.actionPerformed(JPrincipal.java:24)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:5501)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
at java.awt.Component.processEvent(Component.java:5266)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3968)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1778)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
NÃO Funfou a conexão
EXECUTADO COM SUCESSO (tempo total: 3 segundos)
É isso que eu não estou entendendo.
Claro que eu tomo o cuidado de levantar o banco…
Por favor, se alguém puder me ajudar, sou grato desde já.
Berto
[quote=berto_man]…
...
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:XE
...
…[/quote]
Olá!
A mensagem é assaz explicativa. Ele recusa conexão pois não passa os dados corretos. A URL de conexão ao banco em geral é (pelo thin driver):
jdbc:oracle:thin:usuario/senha@host:porta:database
Pode-se omitir na URL de conexão o usuário e senha, desde que passes via método. Tente aí.
Até!
Nossa maquiavelbona, valeu!
Obrigado pela dica!
Qual é esse thin driver ?
onde encontro para download ?