Preparestatement实现对数据库的增删改查(一)(以mysql数据库为例)

将数据库连接方法和资源关闭方法封装在一个类中,之后直接调用方法来实现数据库的连接和资源的关闭

对数据库进行操作,必然是需要用到数据库连接以及关闭,所以将两个方法封装在utils包下的JDBCUtils.Class中。
数据库连接方法如下:

public static Connection getConnection() throws Exception {
            InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
            Properties properties = new Properties();
            properties.load(inputStream);

            String user = properties.getProperty("user");
            String password = properties.getProperty("password");
            String url = properties.getProperty("url");
            String Driver = properties.getProperty("Driver");

            Class.forName(Driver);
            Connection conn = DriverManager.getConnection(url,user,password);
            return conn;
    }

数据库以及各类资源关闭方法如下:

    public static void closeResourse(Connection conn, PreparedStatement ps){
        try {
            if(ps != null)
            ps.close();
            if(conn !=null)
            conn.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }

利用Preparestatement实现向Customers数据库中插入一条记录

1.连接数据库。
2.获取Preparement实例。写出插入记录的sql语句,利用Connetion类中的prepareStatement()方法获取PrepareStatement实例。(预编译sql语句)
3.填充占位符。占位符的索引应该从1开始,每一个数字对应的是第几个占位符
4.利用ps.execute()方法执行sql语句
5.关闭资源

        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = JDBCUtils.getConnection();
        /*
        获取PreparedStatement实例
         */
            String sql = "insert into customers(name,email,birth) values(?,?,?)";
            ps = conn.prepareStatement(sql);
            ps = conn.prepareStatement(sql);
        /*
        填充占位符
         */
            ps.setString(1,"gyx");
            ps.setString(2,"gyx@.com");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy--MM--dd");
            java.util.Date data = sdf.parse("2001--04--15");
            ps.setDate(3,new Date(data.getTime()));

        /*
        执行sql
         */
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResourse(conn,ps);
        }

利用PrepareStatement实现对Customers数据库的修改、删除操作

相比于对Customers数据库的插入记录操作,修改和删除操作实现的步骤基本相同。只是执行的sql语句不同。

		Connection conn = null;
        PreparedStatement ps = null;
        try {
        /*
        获取数据库连接
         */
            conn = JDBCUtils.getConnection();
        /*
        预编译sql语句,返回PreparedStatement实例
         */
         //修改记录
            String sql = "update customers set name = ? where id = ?";
         //删除记录
         	String sql = "delete from customers where id = ?";
            ps = conn.prepareStatement(sql);
        /*
        填充占位符
         */
            ps.setString(1,"莫扎特");
            ps.setInt(2,18);
        /*
        执行sql语句
         */
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
        /*
        关闭连接
         */
            JDBCUtils.closeResourse(conn,ps);
        }

针对于不同表的通用增删改操作

数据库中往往都有多张表,所以将执行sql语句和占位符的个数作为参数封装在一个方法中,然后调用改方法。可以来实现我们对数据库中的不同的表进行增删改

		public void testUpdate(String sql,Object ...args){//sql中占位符的个数与可变形参的个数相同
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = JDBCUtils.getConnection();
            //预编译sql语句
            ps = conn.prepareStatement(sql);
            //填充占位符
            for(int i=0;i< args.length;i++){
                ps.setObject(i+1,args[i]);
            }
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResourse(conn,ps);
        }

    }

测试调用如下:

    @Test
    public void testConmmonUpdate(){
        String sql = "delete from customers where id = ?";
        testUpdate(sql,3);
        String sql = "update `order` set order_name = ? where order_id = ?";
        testUpdate(sql,"DD","2");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值