i am trying to do access the database table records using swing event handling but after pressing the button it is showing exception. i dont know what is going wrong. here is my code:
private void DisplayAllButtonActionPerformed(java.awt.event.Act ionEvent evt) {
try {
String SQL = "SELECT * FROM OCCUPANTS";
rs = stmt.executeQuery( SQL ); //line no 264
while( rs.next( )) {
int id_col = rs.getInt("ID");
String id=Integer.toString(id_col);
String room =rs.getString("ROOM");
String occupant = rs.getString("OCCUPANT");
DisplayArea.setText( id + " " + room + " " + occupant);
}
}
catch ( SQLException err ) {
System.out.println( err.getMessage( ) );
}
}
Fallowing is the exception:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at wumpus.WumpusGUI.DisplayAllButtonActionPerformed(W umpusGUI.java:264)
at wumpus.WumpusGUI.access$300(WumpusGUI.java:16)
at wumpus.WumpusGUI$4.actionPerformed(WumpusGUI.java: 164)
at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed (AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.jav a:6505)
at javax.swing.JComponent.processMouseEvent(JComponen t.java:3321)
at java.awt.Component.processEvent(Component.java:627 0)
at java.awt.Container.processEvent(Container.java:222 9)
at java.awt.Component.dispatchEventImpl(Component.jav a:4861)
at java.awt.Container.dispatchEventImpl(Container.jav a:2287)
at java.awt.Component.dispatchEvent(Component.java:46 87)
at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:4422)
at java.awt.Container.dispatchEventImpl(Container.jav a:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719 )
at java.awt.Component.dispatchEvent(Component.java:46 87)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.j ava:703)
at java.awt.EventQueue.access$000(EventQueue.java:102 )
at java.awt.EventQueue$3.run(EventQueue.java:662)
at java.awt.EventQueue$3.run(EventQueue.java:660)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:676)
at java.awt.EventQueue$4.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 673)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:97)
BUILD SUCCESSFUL (total time: 28 seconds)
Here is the globally initialization of stmt
public class WumpusGUI extends javax.swing.JFrame {
Connection con;
Statement stmt;
ResultSet rs;
/**
* Creates new form WumpusGUI
*/
public WumpusGUI() {
initComponents();
DBConnect();
}
public void DBConnect() {
try {
String host = "jdbc:derby://localhost:1527/occupants";
String uName = "ravi";
String uPass= "ravi";
Connection con = DriverManager.getConnection( host, uName, uPass );
Statement stmt = con.createStatement();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Thanks.
Well, you haven’t shown where
stmtis being declared, but it sounds like it’s probably null. Where were you expecting it to be set to a non-null value?Two points about this:
PreparedStatementeach time you execute a query(Additionally, your method name violates Java naming conventions.)
EDIT: From your comments, you’ve got:
That line of your method is declaring a new local variable – it isn’t assigning a value to the instance variable, so the instance variable remains null.
The smallest “fix” would be to change that line to just:
… but as I said above, that wouldn’t be the right fix. Ideally you should get all of this database code out of your GUI class to start with, but at least you should be creating a new statement each time you want to execute it. (And then closing it in a finally block.)
EDIT: Additionally, if you get an exception in the method, you’re just printing it out and continuing merrily… so your
stmtvariable would still be null. Don’t catchExceptionin general, and don’t catch exceptions that you really can’t continue after.