Seguinte galera, estou fazendo um preenchimento de combobox a partir do banco.
Este código está rodando perfeitamente, mas em outra tela, precisei fazer a mesma coisa, só que ao invés de tbProjeto é tbDepartamento e o nome do Cbx tb muda... E este novo código está dando java.lang.NullPointerExceptionnull
Este está certo :
NullPointerException não deve ter nada a ver com o SQL. Mostra o stacktrace
W
willspbr
java.lang.NullPointerException
at fatec.proo.prjProjeto.AlocarFuncDep.initialize(AlocarFuncDep.java:68)
at fatec.proo.prjProjeto.AlocarFuncDep.<init>(AlocarFuncDep.java:35)
at fatec.proo.prjProjeto.Menu$4.actionPerformed(Menu.java:174)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
pmlm
willspbr:
java.lang.NullPointerException
at fatec.proo.prjProjeto.AlocarFuncDep.initialize(AlocarFuncDep.java:68)
O que há na linha 68 da class AlocarFuncDep?
W
willspbr
Statementstmt=dbconn.createStatement();
pmlm
Então dbconn é null nesse momento.
W
willspbr
Então como posso resolver isto? Se puder colocar algum código que me ajuda eu agradeço.
pmlm
Se no outro está a funcionar, nesse deve faltar a inicialização da variável.
W
willspbr
Ela já esta inicializada como nula
pmlm
Então esse é o problema!
W
willspbr
Então o que devo colocar? O outro código está correto e está inicializado como null tb.
ViniGodoy
Em algum momento você não cria sua conexão?
W
willspbr
Meu código está assim :
packagefatec.proo.prjProjeto;importjava.awt.Rectangle;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjavax.swing.JButton;importjavax.swing.JComboBox;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassAlocarFuncDepextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJLabeljLabel=null;privateJLabeljLabel1=null;privateJButtonbtnAlocar=null;privateJButtonbtnSair=null;privateJComboBoxcbxDepFunc=null;privateJComboBoxcbxDepDep=null;privateConnectiondbconn;privateStatementstmt=null;/** * This is the default constructor */publicAlocarFuncDep(){super();initialize();try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Stringurl="jdbc:odbc:bdExemplo";Stringuser="";Stringpassword="";//efetua conexãodbconn=DriverManager.getConnection(url,user,password);stmt=dbconn.createStatement();System.out.println("Conexão Ok");}catch(Exceptionex){System.out.println("Falha na Conexão");System.out.println(ex.toString()+ex.getMessage());}}/** * This method initializes this * * @return void */privatevoidinitialize(){this.setSize(389,200);this.setContentPane(getJContentPane());this.setTitle("Alocar Funcionário em Departamento");try{stmt=dbconn.createStatement();ResultSetresultSet=stmt.executeQuery("select * from tbFuncMen");while(resultSet.next()){cbxDepFunc.addItem(resultSet.getString(2));}resultSet=stmt.executeQuery("select * from tbFuncHor");while(resultSet.next()){cbxDepFunc.addItem(resultSet.getString(2));}cbxDepFunc.updateUI();resultSet=stmt.executeQuery("select * from tbProjeto");while(resultSet.next()){cbxDepDep.addItem(resultSet.getString(2));}cbxDepDep.updateUI();}catch(Exceptionex){ex.printStackTrace();}}/** * This method initializes jContentPane * * @return javax.swing.JPanel */privateJPanelgetJContentPane(){if(jContentPane==null){jLabel1=newJLabel();jLabel1.setBounds(newRectangle(30,64,108,25));jLabel1.setText("Departamento");jLabel=newJLabel();jLabel.setBounds(newRectangle(30,28,76,25));jLabel.setText("Funcionário");jContentPane=newJPanel();jContentPane.setLayout(null);jContentPane.add(jLabel,null);jContentPane.add(jLabel1,null);jContentPane.add(getBtnAlocar(),null);jContentPane.add(getBtnSair(),null);jContentPane.add(getCbxDepFunc(),null);jContentPane.add(getCbxDepDep(),null);}returnjContentPane;}/** * This method initializes btnAlocar * * @return javax.swing.JButton */privateJButtongetBtnAlocar(){if(btnAlocar==null){btnAlocar=newJButton();btnAlocar.setBounds(newRectangle(44,105,87,25));btnAlocar.setText("Alocar");}returnbtnAlocar;}/** * This method initializes btnSair * * @return javax.swing.JButton */privateJButtongetBtnSair(){if(btnSair==null){btnSair=newJButton();btnSair.setBounds(newRectangle(149,105,89,26));btnSair.setText("Sair");btnSair.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){dispose();}});}returnbtnSair;}/** * This method initializes cbxDepFunc * * @return javax.swing.JComboBox */privateJComboBoxgetCbxDepFunc(){if(cbxDepFunc==null){cbxDepFunc=newJComboBox();cbxDepFunc.setBounds(newRectangle(148,26,198,29));}returncbxDepFunc;}/** * This method initializes cbxDepDep * * @return javax.swing.JComboBox */privateJComboBoxgetCbxDepDep(){if(cbxDepDep==null){cbxDepDep=newJComboBox();cbxDepDep.setBounds(newRectangle(148,61,198,31));}returncbxDepDep;}}// @jve:decl-index=0:visual-constraint="10,10"
ViniGodoy
Ponha a linha do initialize() por último em seu construtor.
Note que no código atual, você está criando a conexão só após o initialize() executar. Entretanto, parte do seu initialize já depende de uma conexão criada.