zoukankan      html  css  js  c++  java
  • 手动实现数据库修改(添加、修改、删除)操作【单行】

    手动实现对数据库中【单行】数据的修改(添加、修改、删除)操作(以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     }
  • 相关阅读:
    JVM原理---------------1.开篇
    mysql开启事务的方式,命令学习
    mysql中的锁
    mysql索引底层原理
    mysql的常见存储引擎与常见日志类型,以及4种线程的作用
    Mutex
    委托和匿名委托
    线程通信
    同步锁
    [ValidateInput(false)]
  • 原文地址:https://www.cnblogs.com/xiaofeng338/p/13540587.html
Copyright © 2011-2022 走看看