这是我的第一篇文章,请耐心等待。我正在研究一个java项目,它连接到一个sql数据库。我目前要做的是当我单击一个按钮时,将在我的数据库的文本区域中显示项目的名称和具有指定ID的项目的价格。但是,当我单击该按钮时,会出现如下错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at OrderFrame.waterButtonActionPerformed(OrderFrame.java:494)
at OrderFrame.access$000(OrderFrame.java:11)
以下是我的waterButtonActionPerformed:
的代码private void waterButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
String query;
query = "SELECT itemName, itemPrice FROM item WHERE itemID = '11111'";
String itemName = " ",itemPrice =" ";
***ResultSet rs = st.executeQuery(query);***
if(rs != null){
while(rs.next())
{
itemName = rs.getString(1);
itemPrice = rs.getString(2);
}
orderTextArea.setText(itemName);
orderTextArea.setText(itemPrice);
}
} catch (SQLException ex) {}
}
第494行是具有ResultSet声明的行。我希望有人可以帮我解决这个问题。提前谢谢。
答案 0 :(得分:2)
st
是null
。你需要像
con.prepareStatement(query);
con
是您与SQL数据库的连接。您没有在此处显示如何连接到数据库。 Here's a good tutorial on how to do that.
答案 1 :(得分:2)
重写处理程序,如下所示:
waterButton.addActionListener(new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
Statement st = connectionObject.createStatement();
// might want to use placeholders here as well
String query= "SELECT itemName, itemPrice FROM item WHERE itemID = '11111'";
String itemName = " ",itemPrice =" ";
ResultSet rs = st.executeQuery(query);
if(rs != null){
do {
itemName = rs.getString(1);
itemPrice = rs.getString(2);
} while (rs.next());
orderTextArea.setText(itemName);
orderTextArea.setText(itemPrice);
}
} catch (SQLException ex) {
System.err.println(new java.util.Date()+" : "+ex.getMessage();
}
});
答案 2 :(得分:1)
看起来st是null。您的示例不会显示声明st的位置,更不用说初始化。
您可能需要从查询中创建一个Statement(这只是一个字符串)
答案 3 :(得分:1)
看起来st是null。请检查你的st否则写代码
conn.prepareStatement(query)