我有我的Java程序,我需要从我的MYSQL DB获取数据, 我写了这个,但它只是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");
}
}
答案 0 :(得分:3)
嗯,你实际上并没有执行准备好的声明......你只是在准备它。您应该致电PreparedStatement.executeQuery
并使用它返回的ResultSet
:
// ...code as before...
try (ResultSet results = ps.executeQuery()) {
while (results.next()) {
// Use results.getInt etc
}
}
(您应该使用try-with-resources语句关闭PreparedStatement
- 如果您不使用Java 7,则应使用手动try/finally
块。)
答案 1 :(得分:2)
您需要在preparedstatement上执行executeQuery以获取您执行的查询的结果集。
答案 2 :(得分:1)
您只是不执行查询。添加PreparedStatement.executeQuery()
来电。并从返回的ResultSet
。
例如:
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
现在是AutoClosable
,这意味着您可以而且应该使用try-with-resource模式。
答案 3 :(得分:1)
您可以执行以下操作。
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>");
}