0

I'm trying to compile my jdbc for my gui, its goal is to grab the user input from the user and then select the table with the corresponding table, (not implemented yet) and then under that rows imagepath column get the string which is an image path from that row, and use this string to display an image. So far when I run my code I'm getting the following error.

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

This error occurs when I press the following button.

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
3
  • "at Assignment.DisplaySearch.Search(Search.java:276)" Here it says line 276 caused the exception. Which line is line number 276 ? Commented Oct 8, 2013 at 10:35
  • where do you initialize Statement statement? Commented Oct 8, 2013 at 10:37
  • 3
    The error is NOT occurring when you are >>compiling<< anything. The error is occurring when you >>run<< your application. Commented Oct 8, 2013 at 10:45

2 Answers 2

3

You are operating on PreparedStatement pt but closing statement which is null.

Sign up to request clarification or add additional context in comments.

Comments

0

You are closing the Statement object which points to null which inturn gives a NullPointerException.

Change Your code as follows...

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`

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.