java - Java SQLite ResultSet 不返回任何内容
问题描述
我试图从数据库中获取数据,但是当我插入一些东西时它什么也没有返回。我不知道我做错了什么。我遵循了许多教程,但没有发现任何工作。
sql = "INSERT INTO optionsetvalue (optionsetid, value, text) VALUES ("+id+", 10000, 'Monday')";
executeInsert(sql);
sql = "SELECT * FROM optionsetvalue";
ResultSet rs = execute(sql, true);
try {
while(rs.next())
{
System.out.println(rs.getInt("value"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我有这个方法
protected ResultSet execute(String sql, boolean returnResults)
{
ResultSet results = null;
if(databaseExists)
{
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement()) {
if(returnResults) results = stmt.executeQuery(sql);
else stmt.execute(sql);
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
return results;
}
我犯了什么错误?当我逐步完成代码时,它肯定会进入 stmt.executeQuery 方法。当我运行 rs.Next() 时,它返回 false,因此永远不会到达 System.out.println。
protected long executeInsert(String sql)
{
try(
Connection conn = DriverManager.getConnection(url);
PreparedStatement statement = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
) {
int affectedRows = statement.executeUpdate();
if (affectedRows == 0) {
throw new SQLException("Creating user failed, no rows affected.");
}
try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
if (generatedKeys.next()) {
return generatedKeys.getLong(1);
}
else {
throw new SQLException("Creating user failed, no ID obtained.");
}
}
} catch(SQLException e)
{
System.out.println(e.getMessage());
}
return -1;
}
解决方案
您在执行方法中使用了 try-with-resource,这意味着您的连接和结果集在您退出 try {} 时已关闭,您需要直接从结果集中提取数据并从方法中返回该数据作为自定义类或一些集合类。
一个非常简化的例子
if(returnResults) {
results = stmt.executeQuery(sql);
if (results.next()) {
value = results.getInt(“value”);
System.out.println(value);
}
}
推荐阅读
- java - 如果对象的字段变量=方法的参数,我如何从对象数组中删除对象
- python - 使用多处理池时更新对象的成员变量
- java - SpringBoot JPA 使用 nulls 列保留父级的子级
- javascript - 在 Javascript 中单击单选按钮时使用 addeventlistener 添加内容
- c - 不保存结构的元素
- docker - 用于 IBM websphere Liberty 和许可的 Docker 映像
- arrays - 使用 Hooks (useState) 向数组添加/删除
- php - 150 年前的今天在 PHP
- javascript - 如何通过点击进度条的数量在音频中前进?
- python - 将 Windows 路径转换为 Linux