从数据库

时间:2017-06-11 08:24:59

标签: java database jdbc

我一直试图从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();
    }
}

2 个答案:

答案 0 :(得分:1)

首先@Sagar似乎是正确的,因为无法确保txt1中存在可投射值。确保您应为txt1添加ChangeListener。 http://docs.oracle.com/javase/tutorial/uiswing/events/changelistener.html

其次,将查询连接在一起是不好的做法,特别是如果查询参数来自UI。这背后的原因是你正在打开SQL注入。请改为使用PreparedStatementshttp://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