2013-10-08 4 views
0

Я пытаюсь скомпилировать свой jdbc для моего gui, его цель - захватить пользовательский ввод от пользователя, а затем выбрать таблицу с соответствующей таблицей (еще не реализована) а затем под этим столбцом пути строк вы получите строку, которая является образом изображения из этой строки, и используйте эту строку для отображения изображения. Пока я запускаю свой код, я получаю следующую ошибку.java.lang.NullPointerException Ошибка при компиляции jdbc

java.lang.NullPointerException 
    at Assignment.DisplaySearch.Search(Search.java:276) 
    at Assignment.Search$4.actionPerformed(Search.java:123) 

Эта ошибка возникает, когда я нажимаю следующую кнопку.

ViewerButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       try { 
        DisplaySearch.Search(jtfImagename1.getText(), jtfLocation1.getText(), jtfTimestamp1.getText()); 
       } catch (SQLException ex) { 
        ex.printStackTrace(); 
       } 
       return; 
      } 
     }); 

JDBC-

class DisplaySearch { 
     // database URL        

     static final String DATABASE_URL = "jdbc:mysql://localhost:3306/mysql"; 
     static final String USERNAME = "root"; 
     static final String PASSWORD = "root"; 

     // launch the application 
     public static void Search(String imageName, String DateStamp, String imageTag) throws SQLException { 
      Connection connection = null; // manages connection 
      Statement statement = null; // query statement 
      ResultSet resultSet = null; // manages results 

      // connect to database books and query database 
      try { 
       // establish connection to database 
       Class.forName("com.mysql.jdbc.Driver").newInstance(); 
       connection = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD); 

       // query database 
       PreparedStatement pt = connection.prepareStatement(
         "SELECT imageName, DateStamp, imageTag FROM images WHERE imageName=? AND DateStamp=? AND imageTag=?"); 
       pt.setString(1, "image-name"); 
       pt.setString(2, "date-stamp"); // maybe .setDate(...) 
       pt.setString(3, "image-tag"); 
       resultSet = pt.executeQuery(); 

       while (resultSet.next()) { 
        // Position the cursor 
        imageName = resultSet.getString(0); 
        DateStamp = resultSet.getString(1); 
        imageTag = resultSet.getString(2); 
        System.out.println("datas : " + imageName + " " + DateStamp + " " + imageTag); 
        if (imageName != "" || imageName != null) { 
         String Name = resultSet.getString(imageName); 
         System.out.print("Image Name: " + Name); 
         resultSet = statement.executeQuery("SELECT imageName, DateStamp, imageTag FROM images where imageName='" 
           + imageName + "'"); 
        } 

        if (DateStamp != null) { 
         String Date = resultSet.getString(DateStamp); 
         System.out.print(", Date: " + Date); 
         resultSet = statement.executeQuery("SELECT imageName, DateStamp, imageTag FROM images where DateStamp='" 
           + DateStamp + "'"); 
        } 

        if (imageTag != "" || imageTag != null) { 
         String Tag = resultSet.getString(imageTag); 
         System.out.print(", Tag: " + Tag); 
         resultSet = statement.executeQuery("SELECT imageName, DateStamp, imageTag FROM images where imageTag='" 
           + imageTag + "'"); 
        } 
       }// end while 
      } // end try 
      catch (Exception e) { 
       e.printStackTrace(); 
      } // end catch              
      try { 
       resultSet.close(); 
       statement.close(); 
       connection.close(); 
      } // end try            
      catch (Exception exception) { 
       exception.printStackTrace(); 
      } // end catch 
     } // end main 
+0

"в Assignment.DisplaySearch.Search (Search.java:276)" Вот он говорит, что линия 276 вызвал исключение. Какая строка - номер строки 276? – nos

+0

где вы инициализируете заявление оператора? – hellzone

+3

Ошибка не возникает, когда вы >> компилируете << ничего. Ошибка возникает, когда вы >> запускаете << ваше приложение. –

ответ

3

Вы работаете на PreparedStatement pt, но закрытие statement которое нуль.

0

Вы закрываете объект Statement, который указывает на значение null, которое inturn дает исключение NullPointerException.

изменить свой код следующим образом ...

class DisplaySearch { 
     // database URL        

     static final String DATABASE_URL = "jdbc:mysql://localhost:3306/mysql"; 
     static final String USERNAME = "root"; 
     static final String PASSWORD = "root"; 

     // launch the application 
     public static void Search(String imageName, String DateStamp, String imageTag) throws SQLException { 
      Connection connection = null; // manages connection 
      PreparedStatement pt = null; // query statement 
      ResultSet resultSet = null; // manages results 

      // connect to database books and query database 
      try { 
       // establish connection to database 
       Class.forName("com.mysql.jdbc.Driver").newInstance(); 
       connection = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD); 

    //   resultSet = statement.executeQuery(
    //     "SELECT imageName, DateStamp, imageTag FROM images WHERE imageName='*' AND DateStamp='*' AND imageTag='*'"); 
    // 

       // query database 
       pt = connection.prepareStatement(
         "SELECT imageName, DateStamp, imageTag FROM images WHERE imageName=? AND DateStamp=? AND imageTag=?"); 
       pt.setString(1, "image-name"); 
       pt.setString(2, "date-stamp"); // maybe .setDate(...) 
       pt.setString(3, "image-tag"); 
       resultSet = pt.executeQuery(); 

       while (resultSet.next()) { 
        // Position the cursor 
        imageName = resultSet.getString(0); 
        DateStamp = resultSet.getString(1); 
        imageTag = resultSet.getString(2); 
        System.out.println("datas : " + imageName + " " + DateStamp + " " + imageTag); 
        if (imageName != "" || imageName != null) { 
         String Name = resultSet.getString(imageName); 
         System.out.print("Image Name: " + Name); 
         resultSet = statement.executeQuery("SELECT imageName, DateStamp, imageTag FROM images where imageName='" 
           + imageName + "'"); 
        } 

        if (DateStamp != null) { 
         String Date = resultSet.getString(DateStamp); 
         System.out.print(", Date: " + Date); 
         resultSet = statement.executeQuery("SELECT imageName, DateStamp, imageTag FROM images where DateStamp='" 
           + DateStamp + "'"); 
        } 

        if (imageTag != "" || imageTag != null) { 
         String Tag = resultSet.getString(imageTag); 
         System.out.print(", Tag: " + Tag); 
         resultSet = statement.executeQuery("SELECT imageName, DateStamp, imageTag FROM images where imageTag='" 
           + imageTag + "'"); 
        } 
       }// end while 
      } // end try 
      catch (Exception e) { 
       e.printStackTrace(); 
      } // end catch              
      try { 
       resultSet.close(); 
       pt.close(); 
       connection.close(); 
      } // end try            
      catch (Exception exception) { 
       exception.printStackTrace(); 
      } // end catch 
     } // end main`enter code here` 
Смежные вопросы