手动实现数据库修改(添加、修改、删除)操作【单行】
手动实现对数据库中【单行】数据的修改(添加、修改、删除)操作(以Customers表为例)
Customers表
添加操作:
1 /*** 2 * @Description 向customer表中添加一条记录 3 * @author XiaoFeng 4 * @date 2020年8月21日下午12:45:09 5 */ 6 @Test 7 public void testInstance() { 8 Connection conn = null; 9 PreparedStatement ps = null; 10 try { 11 // 一. 建立与数据库的连接 12 // 1. 加载资源 13 // InputStream is = MySqlTest.class.getClassLoader().getResourceAsStream("jdbc.properties") ; 14 InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties"); 15 Properties pros = new Properties(); 16 pros.load(is); 17 // 2. 读取资源 18 String user = pros.getProperty("user"); 19 String password = pros.getProperty("password"); 20 String url = pros.getProperty("url"); 21 String driver = pros.getProperty("driverClass"); 22 // 3. 加载驱动 23 Class.forName(driver); 24 // 4. 获取数据库连接 25 conn = DriverManager.getConnection(url, user, password); 26 // 二. 操作数据库 27 // 1. 预编译sql语句,返回PreparedStatement实例对象 28 String sql = "insert into customers(id,name,email,birth) values(?,?,?,?) "; 29 ps = conn.prepareStatement(sql); 30 // 2. 填充占位符 31 ps.setObject(1, 20); 32 ps.setObject(2, "钢铁侠"); 33 ps.setObject(3, "911.@usa.cn"); 34 ps.setObject(4, "1990-09-01"); 35 // 3. 执行操作 36 ps.execute(); 37 System.out.println("数据填充完成!"); 38 } catch (Exception e) { 39 e.printStackTrace(); 40 } finally { 41 // 三. 关闭资源 42 if (ps != null) { 43 try { 44 ps.close(); 45 } catch (SQLException e) { 46 e.printStackTrace(); 47 } 48 } 49 if (conn != null) { 50 try { 51 conn.close(); 52 } catch (SQLException e) { 53 e.printStackTrace(); 54 } 55 } 56 } 57 }
修改操作:
1 /*** 2 * 3 * @Description 修改customer表中的一个记录 4 * @author XiaoFeng 5 * @throws Exception 6 * @date 2020年8月21日下午12:47:00 7 */ 8 @Test 9 public void testUpdate() { 10 Connection conn = null; 11 PreparedStatement ps = null; 12 try { 13 // 与数据库建立 连接 14 // 加载资源 15 InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties"); 16 Properties pros = new Properties(); 17 pros.load(is); 18 // 读取资源 19 String user = pros.getProperty("user"); 20 String password = pros.getProperty("password"); 21 String url = pros.getProperty("url"); 22 String driver = pros.getProperty("driverClass"); 23 // 加载数据库驱动 24 Class.forName(driver); 25 // 获取数据库连接 26 conn = DriverManager.getConnection(url, user, password); 27 28 // 操作数据库 29 // 预编译SQL语句,返回PreparedStatement实例对象 30 String sql = "update customers set name = ? where id = ?"; 31 ps = conn.prepareStatement(sql); 32 // 填充占位符 33 ps.setObject(1, "钢铁侠2.0"); 34 ps.setObject(2, 20); 35 // 执行语句 36 ps.execute(); 37 System.out.println("修改数据成功"); 38 } catch (Exception e) { 39 e.printStackTrace(); 40 } finally { 41 // 关闭资源 42 if (ps != null) { 43 try { 44 ps.close(); 45 } catch (SQLException e) { 46 e.printStackTrace(); 47 } 48 } 49 if (conn != null) { 50 try { 51 conn.close(); 52 } catch (SQLException e) { 53 e.printStackTrace(); 54 } 55 } 56 } 57 }
总结:实现对数据库中【单行】数据的修改(添加、修改、删除)统一操作
1 /*** 2 * 3 * @Description 对数据库增删改的通用操作 4 * @author XiaoFeng 5 * @throws Exception 6 * @date 2020年8月21日下午1:04:57 7 */ 8 // 与可变形参的长度要与sql中占位符的个数相同 9 public void Update(String sql, Object... args) { 10 11 Connection conn = null; 12 PreparedStatement ps = null; 13 try { 14 // 建立与数据库的连接 15 // 加载资源 16 InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties"); 17 Properties pros = new Properties(); 18 pros.load(is); 19 // 获取资源 20 String user = pros.getProperty("user"); 21 String password = pros.getProperty("password"); 22 String url = pros.getProperty("url"); 23 String driver = pros.getProperty("driverClass"); 24 // 加载数据库驱动 25 Class.forName(driver); 26 // 获取数据库连接 27 conn = DriverManager.getConnection(url, user, password); 28 // 操作数据库 29 // 预编译SQL语句,返回PreparedStatement实例对象 30 ps = conn.prepareStatement(sql); 31 // 填充占位符 32 for (int i = 0; i < args.length; i++) { 33 ps.setObject(i + 1, args[i]); 34 } 35 // 执行操作 36 ps.execute(); 37 System.out.println("操作执行完成!"); 38 } catch (Exception e) { 39 e.printStackTrace(); 40 } finally { 41 // 关闭资源 42 if (ps != null) { 43 try { 44 ps.close(); 45 } catch (SQLException e) { 46 e.printStackTrace(); 47 } 48 } 49 if (conn != null) { 50 try { 51 conn.close(); 52 } catch (SQLException e) { 53 e.printStackTrace(); 54 } 55 } 56 } 57 }
测试代码:
1 @Test 2 public void CreatrTest() { 3 // 测试添加操作 4 String sql = "insert into customers(id,name,email,birth) values(?,?,?,?)"; 5 Update(sql, 21, "美国队长", "MGDZ@test.com", "1850-07-01"); 6 } 7 8 @Test 9 public void deleteTest() { 10 // 测试删除操作 11 String sql = "delete from customers where id = ?"; 12 Update(sql, 21); 13 } 14 15 @Test 16 public void UpdateTest() { 17 // 测试修改操作 18 String sql = "update customers set name = ? where id = ?"; 19 Update(sql, "钢铁侠3.0", 20); 20 }