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
您正在PreparedStatement pt
上操作,但关闭statement
为null。
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`
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.