可以通过调用 Connection 对象的 preparedStatement(String sql) 方法获取 PreparedStatement 对象
- PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句
- PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示,调用 PreparedStatement 对象的 setXxx() 方法来设置这些参数. setXxx() 方法有两个参数,第一个参数是要设置的 SQL 语句中的参数的索引(从 1 开始),第二个是设置的 SQL 语句中的参数的值
1.插入操作
public void testInsert() throws Exception { // 1.获取数据库连接 Connection conn = JDBCUtils.getConnection(); // 2.预编译SQL语句 String sql = "insert into customers(name, email, birth) values(?, ?, ?)"; // 3.获取PreparedStatement对象 PreparedStatement ps = conn.prepareStatement(sql); // 4.填充占位符 ps.setString(1, "哪吒"); ps.setString(2, "nezha@gmail.com"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse("2022-12-22"); ps.setDate(3, new java.sql.Date(date.getTime())); // 5.执行SQL语句 ps.execute(); // 6.关闭资源 JDBCUtils.closeResource(conn, ps); }
2.更新操作
public void testUpdate() { Connection conn = null; PreparedStatement ps = null; try { // 1.获取数据库连接 conn = JDBCUtils.getConnection(); // 2.预编译SQL语句 String sql = "update customers set name = ? where id = ?"; // 3.获取PreparedStatement对象 ps = conn.prepareStatement(sql); // 4.填充占位符 ps.setObject(1, "莫扎特"); ps.setObject(2, 18); // 5.执行SQL语句 ps.execute(); } catch (Exception e) { e.printStackTrace(); } finally { // 6.关闭资源 JDBCUtils.closeResource(conn, ps); } }