package com.in28minutes.jdbc.data.service; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import com.in28minutes.jdbc.hsql.HsqlDatabase; import com.in28minutes.jdbc.model.Todo; public class TodoDataService { private static final String INSERT_TODO_QUERY = "INSERT INTO TODO(DESCRIPTION,IS_DONE) VALUES(?, ?)"; private static final String DELETE_TODO_QUERY = "DELETE FROM TODO WHERE ID=?"; HsqlDatabase db = new HsqlDatabase(); public static Logger logger = LogManager.getLogger(TodoDataService.class); public void insertTodos(List<Todo> todos) { for (Todo todo : todos) { insertTodo(todo); } } private void insertTodo(Todo todo) { PreparedStatement st = null; try { st = db.conn.prepareStatement(INSERT_TODO_QUERY); st.setString(1, todo.getDescription()); st.setBoolean(2, todo.isDone()); st.execute(); } catch (SQLException e) { logger.fatal("Query Failed : " + INSERT_TODO_QUERY, e); } finally { if (st != null) { try { st.close(); } catch (SQLException e) { // Ignore - nothing we can do.. } } } } public void deleteTodo(int id) { PreparedStatement st = null; try { st = db.conn.prepareStatement(DELETE_TODO_QUERY); st.setInt(1, id); st.execute(); } catch (SQLException e) { logger.fatal("Query Failed : " + DELETE_TODO_QUERY, e); } finally { if (st != null) { try { st.close(); } catch (SQLException e) { // Ignore - nothing we can do.. } } } } public List<Todo> retrieveAllTodos() throws SQLException { List<Todo> todos = new ArrayList<Todo>(); Statement st = db.conn.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM TODO"); while (rs.next()) { todos.add(new Todo(rs.getInt(1), rs.getString(2), rs.getBoolean(3))); } st.close(); return todos; } public static void main(String[] args) throws SQLException { TodoDataService dataservice = new TodoDataService(); dataservice.insertTodos(Arrays.asList(new Todo(0, "New Todo fasdf1", false))); dataservice.deleteTodo(1); List<Todo> todos = dataservice.retrieveAllTodos(); logger.info(todos); dataservice.db.closeConnection(); } }