SELECT * H2 数据库中的 WHERE
SELECT * WHERE in H2 database
我正在尝试在我的程序中与我的嵌入式 H2 数据库建立 JDBC 连接。问题是我无法使用 "WHERE ID =" 执行简单查询。在我的数据库中,ID 是字符串而不是整数(在我的示例中为 'D58BE')。
这是我的代码:
public Milestone findbyId(String id) throws ClassNotFoundException, SQLException {
Class.forName("org.h2.Driver");
Connection connection = DriverManager.getConnection("jdbc:h2:~/dao_db", "sa", "");
PreparedStatement prepareStatement = connection.prepareStatement("SELECT * FROM MILESTONE WHERE ID= 'D58BE'");
问题是 SAME 查询 ("SELECT * FROM MILESTONE WHERE ID= 'D58BE'") 在我的嵌入式数据库中完美运行(我使用提供的 h2.jar 来管理数据库来验证结果)。在 eclipse 中,我遇到了这个异常:
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Column "D58BE" not found [42122-191]
我试了很多东西,但还是没用...
要直接执行它,创建一个语句并执行你的SQL:
Statement statement = connection.createStatement();
statement.executeQuery("SELECT * FROM MILESTONE WHERE ID= 'D58BE'");
您正在使用准备好的语句,因此您需要使用占位符:
PreparedStatement statement = connection.prepareStatement("SELECT * FROM MILESTONE WHERE ID=?);
statement.setString(1, "D58BE");
statement.executeQuery();
编辑
详细的例子以及如何处理ResultSet,可以看下面的教程:https://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html
对于你的情况,应该是这样的:
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
String id = rs.getString("ID");
String name = rs.getNamex("NAME"); // Assuming there is a column called name.
System.out.println(id);
}
我正在尝试在我的程序中与我的嵌入式 H2 数据库建立 JDBC 连接。问题是我无法使用 "WHERE ID =" 执行简单查询。在我的数据库中,ID 是字符串而不是整数(在我的示例中为 'D58BE')。
这是我的代码:
public Milestone findbyId(String id) throws ClassNotFoundException, SQLException {
Class.forName("org.h2.Driver");
Connection connection = DriverManager.getConnection("jdbc:h2:~/dao_db", "sa", "");
PreparedStatement prepareStatement = connection.prepareStatement("SELECT * FROM MILESTONE WHERE ID= 'D58BE'");
问题是 SAME 查询 ("SELECT * FROM MILESTONE WHERE ID= 'D58BE'") 在我的嵌入式数据库中完美运行(我使用提供的 h2.jar 来管理数据库来验证结果)。在 eclipse 中,我遇到了这个异常:
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Column "D58BE" not found [42122-191]
我试了很多东西,但还是没用...
要直接执行它,创建一个语句并执行你的SQL:
Statement statement = connection.createStatement();
statement.executeQuery("SELECT * FROM MILESTONE WHERE ID= 'D58BE'");
您正在使用准备好的语句,因此您需要使用占位符:
PreparedStatement statement = connection.prepareStatement("SELECT * FROM MILESTONE WHERE ID=?);
statement.setString(1, "D58BE");
statement.executeQuery();
编辑
详细的例子以及如何处理ResultSet,可以看下面的教程:https://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html
对于你的情况,应该是这样的:
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
String id = rs.getString("ID");
String name = rs.getNamex("NAME"); // Assuming there is a column called name.
System.out.println(id);
}