2013-04-06 57 views
0

我的代碼出現問題,不知道如何解決問題,因爲我一直在做它一遍又一遍......併發生同樣的錯誤任何人都可以告訴我該怎麼做?使用java swing更新sql的數據

這裏是我的代碼:

對於我的連接路徑:

public void Connection(String path){ 
    try{ 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      String url = "jdbc:odbc:*****"; 
      String user = "*****"; 
      String pass = "*****"; 
      connection = DriverManager.getConnection(url, user, pass); 
} catch(Exception e) {}} 

我的更新代碼:

try{ 
      String update = ("UPDATE dbo.Patients set pLName=?,pFName=? where pIDNo" +txtPatientID.getText()+""); 
      ps = connection.prepareStatement(update); 
      ps.setString(1, txtpFName.getText()); 
      ps.setString(2, txtpLName.getText()); 
      ps.execute(); 
      } 
      catch(Exception e) 
      { 
      e.printStackTrace(); 
      System.exit(1); 
      } 

這裏是我得到的錯誤:

java.lang.NullPointerException 
    at javaapplication25.EditPatient.btnUpdateActionPerformed(EditPatient.java:407) 
    at javaapplication25.EditPatient.access$100(EditPatient.java:14) 
    at javaapplication25.EditPatient$2.actionPerformed(EditPatient.java:187) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6505) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
    at java.awt.Component.processEvent(Component.java:6270) 
    at java.awt.Container.processEvent(Container.java:2229) 
    at java.awt.Component.dispatchEventImpl(Component.java:4861) 
    at java.awt.Container.dispatchEventImpl(Container.java:2287) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
    at java.awt.Container.dispatchEventImpl(Container.java:2273) 
    at java.awt.Window.dispatchEventImpl(Window.java:2713) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) 
    at java.awt.EventQueue.access$000(EventQueue.java:101) 
    at java.awt.EventQueue$3.run(EventQueue.java:666) 
    at java.awt.EventQueue$3.run(EventQueue.java:664) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
    at java.awt.EventQueue$4.run(EventQueue.java:680) 
    at java.awt.EventQueue$4.run(EventQueue.java:678) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 
Java Result: 1 
+0

只是一個邊節點:你爲什麼不使用一個param作爲你的'where'條件值,就像你的其他輸入值一樣?永遠記住[Exploits Of A Mom](http://xkcd.com/327/) – Filburt 2013-04-06 07:40:55

+4

stacktrace建議查看EditPatient.java的407行EditPatient.java:407。該行上的代碼是什麼? – 2013-04-06 07:41:49

+0

你確定連接建立成功嗎?在Connection方法中捕獲到的異常不會記錄 – david 2013-04-06 07:54:32

回答

1

如果你的excep重刑在這條線

ps.setString(2, txtpLName.getText()); 

發生似乎txtplName是null,因爲你的代碼已經調用的ps的方法。

但是你應該真的投入到你的異常處理中,否則你會一直遇到這樣的「後續」錯誤。特別是吞嚥您的Connection方法中的例外可能會咬你,因爲你不會看到連接未建立。打印堆棧跟蹤有助於調試,但不適合您的應用程序。至少返回truefalse並相應地處理它(false意味着您無法建立連接,因此無需繼續)。