JDBC删除数据
Demo: 删除数据 (删除编号是 7369 的雇员信息)
1 public class TestMysql { 2 //取得连接 3 private static Connection conn =ConnectionUitl.getConnection(); 4 5 public static void main(String[] args) { 6 System.out.println("删除的数据行数是:" + deleteById(7369)); 7 } 8 9 public static int deleteById(Integer empno) { 10 String sql = "DELETE FROM emp WHERE empno=" + empno; 11 12 //获取发送 sql 语句的对象 13 try { 14 PreparedStatement pst = conn.prepareStatement(sql); 15 //发送 sql 语句 16 return pst.executeUpdate(); 17 } catch (Exception e) { 18 e.printStackTrace(); 19 } finally { 20 ConnectionUitl.close(conn); 21 } 22 return 0; 23 } 24 }
Demo: 批量删除数据 (删除编号为 7654/7782/7844 的雇员信息)
方法: 可以把要删除的雇员的编号保存到一个集合中传递这个方法进行删除
1 public class TestMysql { 2 //取得连接 3 private static Connection conn =ConnectionUitl.getConnection(); 4 5 public static void main(String[] args) { 6 Set<Integer> empnos = new HashSet<Integer>(); 7 empnos.add(7654); 8 empnos.add(7782); 9 empnos.add(7844); 10 System.out.println("删除的数据行数是: " + deleteBarch(empnos)); 11 } 12 13 public static int deleteBarch(Set<Integer> empnos) { 14 StringBuffer sb = new StringBuffer("DELETE FROM emp WHERE empno IN("); 15 Iterator<Integer> iter = empnos.iterator(); 16 while (iter.hasNext()) { 17 sb.append(iter.next() + ","); 18 } 19 20 sb.delete(sb.length()-1, sb.length()); 21 sb.append(")"); 22 23 24 //获取发送 sql 语句的对象 25 try { 26 PreparedStatement pst = conn.prepareStatement(sb.toString()); 27 //执行 sql 语句 28 return pst.executeUpdate(); 29 } catch (Exception e) { 30 e.printStackTrace(); 31 } finally { 32 ConnectionUitl.close(conn); 33 } 34 return 0; 35 } 36 }
为什么使用StringBuffer 而不是String
因为自渡船要频繁的修改,如果使用 String 会造成大量垃圾
(String 类型一旦声明则内容不可以改变, 改变的是引用, 引用会导致垃圾产生),
所以这种情况下使用 StringBuffer 或者 StringBuilder.