我一直试图从txt1(jtextfield)获取一个值,这是我数据库中的一个id。但它一直在说java.lang.NullPointerException。这是代码:
public void harga()
{
try {
stat = con.createStatement();
String query = "SELECT harga from obat WHERE ID = '"+ Integer.valueOf(txt1.getText())+"'";
stat.executeQuery(query);
ResultSet rs = stat.getResultSet();
while (rs.next()) {
int harga = rs.getInt("harga");
//String nama = rs.getString("nama");
System.out.println(harga);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
首先@Sagar似乎是正确的,因为无法确保txt1
中存在可投射值。确保您应为txt1
添加ChangeListener。
http://docs.oracle.com/javase/tutorial/uiswing/events/changelistener.html
其次,将查询连接在一起是不好的做法,特别是如果查询参数来自UI。这背后的原因是你正在打开SQL注入。请改为使用PreparedStatements
:
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
快乐编码,欢迎来到Stackoverflow!
答案 1 :(得分:0)
在评论中你说txt1被初始化为
JTextField txt1 = new JTextField();
这似乎是错误的:txt1应该是类的变量,但是你写了一个在该方法之外不存在的局部变量。试试这个
private JTextField txt1; //Below the class declaration "public Class ..."
txt1 = new JTextField(); //Instead of the line you wrote to initialize txt1