2016-03-17 30 views
0

所以我試圖從java應用程序中將信息存儲到數據庫中,但是出現此錯誤:「」AWT-EventQueue-0「java.lang。 NullPointerException「,我可以爲我的生活找不到原因。 我試圖改變變量的名稱,我試過使用「PreparedStatment」以及。但到目前爲止沒有任何工作。將sql語句從java推送到數據庫,executeUpdate()返回NullPointerException

public class Db { 

public static final String DRIVER ="com.mysql.jbdc.Driver"; 
public static final String URL = "jdbc:mysql://localhost:3306/oving8"; 
public static final String USER = "root"; 
public static final String PW = ""; 
private static Connection kobling; 

private static Statement settOppStatment(){ 
    try { 
     Class.forName(DRIVER); 
     Connection tilkobling = DriverManager.getConnection(URL, USER, PW); 
     return tilkobling.createStatement(); 
    } catch (ClassNotFoundException e) { 
     System.out.println("Can not find the class in"); 
    } catch (SQLException e) { 
     System.out.println("Can not connect to database"); 
     } 
    return null; 
} 
public static void skrivEnhetTilDB(Enhet enhet){ 
Statement st = settOppStatment(); 

String ID = Enhet.getId(); 
String Navn = Enhet.getNavn(); 
String sqlEnhet = null; 


if (enhet != null){ 
    sqlEnhet = "INSERT INTO enhet VALUES('"+ ID + "','" + Navn + "');"; 
}; 
System.out.println(sqlEnhet); 

try { 
    st.executeUpdate(sqlEnhet); <---- Line 123 
} catch (SQLException e) { 
    System.out.println("This unit is already registerd"); 
} 
try { 
    st.getConnection().close(); 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 

};

而且堆棧跟蹤:如果你得到任何的異常的

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at fil.Db.skrivEnhetTilDB(Db.java:123) 
at main.Jframe$9.actionPerformed(Jframe.java:385) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 
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:6535) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
at java.awt.Component.processEvent(Component.java:6300) 
at java.awt.Container.processEvent(Container.java:2236) 
at java.awt.Component.dispatchEventImpl(Component.java:4891) 
at java.awt.Container.dispatchEventImpl(Container.java:2294) 
at java.awt.Component.dispatchEvent(Component.java:4713) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
at java.awt.Container.dispatchEventImpl(Container.java:2280) 
at java.awt.Window.dispatchEventImpl(Window.java:2750) 
at java.awt.Component.dispatchEvent(Component.java:4713) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
at java.awt.EventQueue.access$500(EventQueue.java:97) 
at java.awt.EventQueue$3.run(EventQueue.java:709) 
at java.awt.EventQueue$3.run(EventQueue.java:703) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 
at java.awt.EventQueue$4.run(EventQueue.java:731) 
at java.awt.EventQueue$4.run(EventQueue.java:729) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
+1

你'settOppStatment'方法必須返回null。 – Eran

+1

'settOppStatment()'返回'null',因爲在建立連接和創建語句時出現了一些錯誤。 –

+0

嘗試調試代碼,並檢查你輸入正確的密碼,登錄,網址和驅動程序 - 它看起來像你不連接到數據庫 – amkz

回答

0

下面的代碼將返回null。在那種情況下,因爲你有sysout,你應該在控制檯或日誌文件中看到這些消息。

你也可以使用調試器逐行檢查發生了什麼。

private static Statement settOppStatment(){ 
    try { 
     Class.forName(DRIVER); 
     Connection tilkobling = DriverManager.getConnection(URL, USER, PW); 
     return tilkobling.createStatement(); 
    } catch (ClassNotFoundException e) { 
     System.out.println("Can not find the class in"); 
    } catch (SQLException e) { 
     System.out.println("Can not connect to database"); 
     } 
    return null; 
} 
+0

我試過,以及我真的不明白任何東西,所以沒有多大幫助。 –

+0

您是否在控制檯或日誌文件中看到「找不到類」或「無法連接到數據庫」? –

+0

不,它只是返回sysout和堆棧跟蹤 –

0

經過幾個小時的工作,我看到它是拼寫錯誤。

之前: public static final String DRIVER =「com.mysql.jbdc.Driver」;

後:

public static final String DRIVER ="com.mysql.jdbc.Driver";