Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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_Prepared Statement - Fatal编程技术网

Java 如何修复我准备好的语句,以便从应用程序中的数据库中获取数据?

Java 如何修复我准备好的语句,以便从应用程序中的数据库中获取数据?,java,prepared-statement,Java,Prepared Statement,我有我的Java程序,我需要从MYSQL数据库获取数据, 我写了这一行,但它只是sysout,所以从我的类中获取数据,而不使用预先准备好的语句,我可以删除前3行,它也可以工作 需要一些帮助来找出如何从我的数据库中获取数据并打印出来 public void viewClientDetails(ClientsBean client) { try { PreparedStatement ps = connect.getConnection().prepareStatement(

我有我的Java程序,我需要从MYSQL数据库获取数据, 我写了这一行,但它只是sysout,所以从我的类中获取数据,而不使用预先准备好的语句,我可以删除前3行,它也可以工作 需要一些帮助来找出如何从我的数据库中获取数据并打印出来

public void viewClientDetails(ClientsBean client) {
    try {
        PreparedStatement ps = connect.getConnection().prepareStatement(
            "SELECT * FROM mbank.clients WHERE client_id = ?");
        ps.setLong(1, client.getClient_id());
        System.out.println(client.getClient_id());
        System.out.println(client.getName());
        System.out.println(client.getType());
        System.out.println(client.getPhone());
        System.out.println(client.getAddress());
        System.out.println(client.getEmail());
        System.out.println(client.getComment());
    } catch (SQLException e) {
        e.printStackTrace();
        JOptionPane.showMessageDialog(null,
        "Problem occurs while trying to see client details");
    }
}

您需要对preparedstatement执行executeQuery,以获取所执行查询的结果集。

您实际上并没有执行preparedstatement。。。你只是在准备。您应该调用并使用它返回的结果集:

// ...code as before...
try (ResultSet results = ps.executeQuery()) {
    while (results.next()) {
        // Use results.getInt etc
    }
}

您也应该使用try with resources语句来关闭PreparedStatement,如果您没有使用Java 7,则应该使用手动try/finally块。

您只是没有执行查询。添加一个呼叫。并从返回的结果中获取结果

例如:

PreparedStatement ps = connect.getConnection().prepareStatement("SELECT * FROM mbank.clients WHERE client_id = ?");
ps.setLong(1, client.getClient_id());    
ResultSet rs = ps.executeQuery();
while (rs.next()) {
    String userid = rs.getString("id");
    String username = rs.getString("name"); 
}
正如@Jon Skeet指出的,Java 7中的ResultSet声明更新为:

public interface ResultSet extends Wrapper, AutoCloseable
它现在可以自动关闭,这意味着您可以并且应该使用该模式。

您可以执行以下操作

 PreparedStatement ps = connect.getConnection().prepareStatement(
                "SELECT * FROM mbank.clients WHERE client_id = ?");
 resultSet = ps.executeQuery();
 while (resultSet.next()) {
     String user = resultSet.getString("<COLUMN_1>");
     String website = resultSet.getString("<COLUMN_2>");
     String summary = resultSet.getString("<COLUMN_3>");
 }

这是Java,不是Java。也不需要写在标题中,因为它被标记了。你期待什么?代码中没有执行查询。此外,没有结果集。你的代码做了正确的事情:只需在你最喜欢的搜索引擎的文本框中键入此内容,你就会找到第一个类似的链接。