Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数据库中获取值_Java_Database_Jdbc - Fatal编程技术网

Java 从数据库中获取值

Java 从数据库中获取值,java,database,jdbc,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())+

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

您在评论中说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

首先@Sagar似乎是正确的,因为它不能确保在
txt1
中有可浇铸值。为确保您应该为
txt1
添加ChangeListener。

其次,将查询集中在一起是一种不好的做法,尤其是当查询参数来自UI时。这背后的原因是您正在向SQL注入敞开大门。改用
PreparedStatements


快乐编码,欢迎来到Stackoverflow

在第142行,字符串查询行以及如何初始化
txt1
?JTextField txt1=new JTextField();在这种情况下,在
txt1
中没有设置值,请确保在查询db之前有一些值。我已经尝试了此操作,但仍然出现了一个错误:(确切地说是哪个错误?如果仍然存在相同的错误,则可能是将txt1传递给执行查询的函数的方式有问题。)