zoukankan      html  css  js  c++  java
  • PreparedStatement实现表数据的增删改 & 封装数据库链接和关闭操作

    PreparedStatement实现表数据的增删改

    PreparedStatementUpdateTest

    package com.aff.PreparedStatement;
    
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.text.SimpleDateFormat;
    import java.util.Properties;
    
    import org.junit.Test;
    
    import com.aff.utils.JDBCUtils;
    
    //使用PreparedStatementUpdateTest,实现数据表的增删改查操作
    
    //增  删   改    不需要返回的    void
    //查询            需要返回的  
    public class PreparedStatementUpdateTest {
        //测试通用的增删改方法
        @Test
        public  void testCommonUpdate() throws Exception{
    //        String  sql= "delete from customers where id = ?";
    //        update(sql, 4);
            
            String sql  ="update  `order` set order_name=? where order_id =?";
            update(sql, "文静",2);
        }
        
        
        
        // 通用的增删改操作
        public void update(String sql, Object... args)  {//sql中占位符的个数与可变形参的长度一致
            // 1.获取数据库连接
            Connection conn = null;
            // 2.预编译sql语句,返回PreparedStatement实例
            PreparedStatement ps = null;
            try {
                conn = JDBCUtils.getConnection();
                ps = conn.prepareStatement(sql);
                // 3.填充占位符
                for (int i = 0; i < args.length; i++) {
                    ps.setObject(i + 1, args[i]);//小心参数声明错误
                }
                // 4.执行
                ps.execute();
                System.out.println("执行成功");
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                // 5.资源的关闭
                JDBCUtils.closeResource(conn, ps);
            }
        }
    
        
        
        
        // 修改customer表的一条记录
        @Test
        public void testUpdate()  {
            // 1.获取数据库连接
            Connection conn = null;
            PreparedStatement ps = null;
            try {
                conn = JDBCUtils.getConnection();
                // 2.预编译sql语句,返回PreparedStatement实例
                String sql = "update customers set name = ?where id =?";
                ps = conn.prepareStatement(sql);
                // 3.填充占位符
                ps.setString(1, "何苗");// 可以使用setObject 如:ps.setObject(1, "何苗");
                ps.setInt(2, 18);
                // 4.执行
                ps.execute();
                System.out.println("修改成功");
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                // 5.资源的关闭
                JDBCUtils.closeResource(conn, ps);
            }
        }
    
        
        
        
        // 向customer表添加一条记录
        @Test
        public void testInsert() {
            // 3.获取连接
            Connection conn = null;
            // 为占位符
            PreparedStatement ps = null;
            try {
    
                // 1.读取配置文件中的4个基本信息,通过类加载器
                // InputStream is =
                // TestConnection.class.getClassLoader().getResourceAsStream("jdbc.properties");
                InputStream is =ClassLoader.getSystemClassLoader()
    .getResourceAsStream("jdbc.properties"); Properties pro = new Properties(); // 加载is这个文件 pro.load(is); // 读取其中的配置信息 String user = pro.getProperty("user"); String url = pro.getProperty("url"); String password = pro.getProperty("password"); String driverClass = pro.getProperty("driverClass"); // 2.加载驱动 Class.forName(driverClass); conn = DriverManager.getConnection(url, user, password); System.out.println(conn); // 4.预编译sql语句,返回preparedStatement的实例 String sql = "insert into customers(name,email,birth)values(?,?,?)";// ? ps = conn.prepareStatement(sql); // 5.填充占位符 ps.setString(1, "芳芳"); ps.setString(2, "2662123933@qq.com"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = sdf.parse("1996-3-4"); ps.setDate(3, new Date(date.getTime())); // 6.执行操作 ps.execute(); System.out.println("插入成功"); } catch (Exception e) { e.printStackTrace(); } finally { // 7.资源的关闭 try { if (conn != null) ps.close(); } catch (Exception e) { e.printStackTrace(); } try { if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }

    封装数据库链接和关闭操作

    JDBCUtils

    package com.aff.util;
    
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.Properties;
    
    //操作数据库的工具类,一般都是静态方法
    
    //获取数据库连接
    public class JDBCUtils {
        // 返回Connection
        public static Connection getConnection() throws Exception {
            // 1.读取配置文件中的4个基本信息,通过类加载器
            InputStream is = ClassLoader.getSystemClassLoader()
    .getResourceAsStream("jdbc.properties"); Properties pro = new Properties(); // 加载is这个文件 pro.load(is); // 读取其中的配置信息 String user = pro.getProperty("user"); String url = pro.getProperty("url"); String password = pro.getProperty("password"); String driverClass = pro.getProperty("driverClass"); // 2.加载驱动 Class.forName(driverClass); // 3.获取连接 Connection conn = DriverManager.getConnection(url, user, password); return conn; } // 关闭数据库的连接和PreparedStatement的操作 // PreparedStatement是statement的子接口,所以下面的参数也可以写Statement public static void closeResource(Connection conn, PreparedStatement ps) { // 7.资源的关闭 try { if (ps != null) ps.close(); } catch (Exception e) { e.printStackTrace(); } try { if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); } } public static void closeResource(Connection conn, PreparedStatement ps, ResultSet rs) { // 7.资源的关闭 try { if (ps != null) ps.close(); } catch (Exception e) { e.printStackTrace(); } try { if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); } try { if (rs != null) rs.close(); } catch (Exception e) { e.printStackTrace(); } } }
    All that work will definitely pay off
  • 相关阅读:
    asp.net 文件下载
    net 数据库连接详解 相当经典啊
    取值:webconfig中的key
    通过监听的端口查找本机进程和服务思路
    以系统服务运行某个程序
    测底根除Windows流氓软件开机自动运行
    使用Wireshark在主机上抓取远程主机的数据流量
    记录Windows远程登录日志
    证书不匹配发出告警的解决方法
    WPS office云同步图标彻底删除方法
  • 原文地址:https://www.cnblogs.com/afangfang/p/12673123.html
Copyright © 2011-2022 走看看