Java 如何修复我准备好的语句,以便从应用程序中的数据库中获取数据?
我有我的Java程序,我需要从MYSQL数据库获取数据, 我写了这一行,但它只是sysout,所以从我的类中获取数据,而不使用预先准备好的语句,我可以删除前3行,它也可以工作 需要一些帮助来找出如何从我的数据库中获取数据并打印出来Java 如何修复我准备好的语句,以便从应用程序中的数据库中获取数据?,java,prepared-statement,Java,Prepared Statement,我有我的Java程序,我需要从MYSQL数据库获取数据, 我写了这一行,但它只是sysout,所以从我的类中获取数据,而不使用预先准备好的语句,我可以删除前3行,它也可以工作 需要一些帮助来找出如何从我的数据库中获取数据并打印出来 public void viewClientDetails(ClientsBean client) { try { PreparedStatement ps = connect.getConnection().prepareStatement(
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。也不需要写在标题中,因为它被标记了。你期待什么?代码中没有执行查询。此外,没有结果集。你的代码做了正确的事情:只需在你最喜欢的搜索引擎的文本框中键入此内容,你就会找到第一个类似的链接。