2013-04-06 70 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意味着您无法建立连接,因此无需继续)。