Я пытаюсь получить данные из базы данных, но она ничего не возвращает, когда я просто что-то вставляю. Я не знаю, что я делаю не так. Я следовал многим учебникам, но ничего не нашел.
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;
}