2012-02-16 38 views
1

我已經在工作中分配了一個任務,但我是Java和Eclipse的初學者。 我必須重新使用現有的程序並修改它的某些部分。 以下部分一點兒也不工作:SQL語句 - 空指針異常

private java.sql.Connection conn; 
private final String sqlRequest = "select ... from ..."; 
//................ 

private void DBConnect(){ 
    try { 

     // Load the driver 
     java.lang.Class.forName(jdbcdriver).newInstance(); 
     // Connect to database 
     conn = java.sql.DriverManager.getConnection(jdbcURL,dbuser,dbpwd); 
     //................ 

private void search2() { 
    try  { 

     // create SQL statement 

     java.sql.Statement stmt = conn.createStatement();  //my line 135 
     java.sql.ResultSet rs = execRequest(stmt,sqlRequest);  
     //................ 

錯誤消息在日食:

"java.lang.NullPointerException at mon_prog.search2(mon_prog.java:135)" 

這部分使用前工作...所以是問題,因爲我的JDK版本?我有JDK7u2

+0

你初始化了conn? – MByD 2012-02-16 09:59:03

+0

您是否在search2()之前調用了DBConnect()? – Arung 2012-02-16 10:45:46

+0

如果頂部的異常行是135,那麼'conn'是'null'。我非常確定'getConnection'永遠不會返回null,所以你不會調用'DBConnect'或者拋出一個丟失的異常。檢查你的異常日誌。 – Gray 2012-02-16 22:23:57

回答

0

第一獲取連接... ..使用

Connection conn = DriverManager.getConnection(connection string); 

conn似乎空。

+0

是對不起,我也有這樣的方法來連接到數據庫: 私人無效數據庫連接(){ \t \t嘗試\t {// 加載驅動程序\t \t \t java.lang.Class.forName(jdbcdriver).newInstance( ); \t \t \t //連接到數據庫 康恩= java.sql.DriverManager.getConnection(JDBCURL,DBUSER,dbpwd); ... – 2012-02-16 10:05:08

+0

@VincentCharrié:請加上你的問題。另外,你的135行mon_prog.java是什麼? – 2012-02-16 10:07:42

0

看一看到如何從Java程序連接到MySQL數據庫大Vogella教程(IDE中立的方式):http://www.vogella.de/articles/MySQLJava/article.html

例步驟連接到數據庫:

  // This will load the MySQL driver, each DB has its own driver 
      Class.forName("com.mysql.jdbc.Driver"); 
      // Setup the connection with the DB 
      connect = DriverManager 
        .getConnection("jdbc:mysql://localhost/feedback?" 
          + "user=sqluser&password=sqluserpw"); 

      // Statements allow to issue SQL queries to the database 
      statement = connect.createStatement(); 
      // Result set get the result of the SQL query 
      resultSet = statement 
        .executeQuery("select * from FEEDBACK.COMMENTS"); 
0

設置斷點上Class.forName()getConnection()調用DBConnect()和您的第135行,然後全部通過調試器運行。如果在嘗試使用連接之前getConnection()沒有得到執行,我不會感到驚訝。 (在那裏,做到了,得到了源代碼控制提交。)

如果不是這樣,那麼您可能還想仔細檢查一下,您是否確實沒有其他變量影響您的預期conn實例。 「去定義」對此非常有用;只要確保你在預期的地方結束。