对数据库jdbc学习的总结

初识jdbc中的内容

对数据库jdbc学习的总结
连接到数据库当中,第一步,然后自己书写增删改的操作以及查询

public void update(String sql, Object... args) {
        //1.获取数据库连接
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = jdbcUtils.getConnection();
            //2.预编译sql语句,返回PreparedStatement实例
            ps = conn.prepareStatement(sql);
            //3.填充占位符
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i + 1, args[i]);
            }
            //4.执行操作
            ps.execute();
//            如果执行的是查询操作,有返回结果,则此方法返回true
//            如果执行的是增删改操作,没有发挥结果,则此方法返回的是false
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //5.资源关闭
            jdbcUtils.closeRescource(conn,  ps);
        }

以级查询操作

  public <T> T getInstance(Class<T> clazz,String sql,Object...args){
        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]);
            }
            //4.执行操作
            ResultSet rs = ps.executeQuery();
//        获取结果集的元数据: ResultSetMetaData
            ResultSetMetaData rsmd = rs.getMetaData();
//       通过 ResultSetMetaData来获取结果集中列数
            int columnCount = rsmd.getColumnCount();

            if(rs.next()){
                T t = clazz.newInstance();
                for (int i = 0; i < columnCount; i++) {
                    //                获取每一列的列值
                    Object columnvalue = rs.getObject(i + 1);
                    //                获取每个列的列名
                    String columnName = rsmd.getColumnName(i+1);
                    //                给cust对象指定的columnName属性,赋值为columnValue,通过反射
                    Field field = clazz.getDeclaredField(columnName);
                    field.setAccessible(true);
                    field.set(t,columnvalue);
                }
                return  t;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //        资源关闭
            jdbcUtils.closeRescource(conn,ps);
        }
        return null;
    }

在学习完查询完,询问过别人,有没有必要去学东西源码,针对不同的方面去学习jdbc,但是我已经学完了,算了,就继续往下走吧。
学习完Dao类以及具体实现类之后,就去学习了数据库连接池,C3p0 Druid,等数据库连接池,数据库使用的jar包,等下上传到百度云盘,有兴趣的可以下载自己去玩。
举一个Druid的例子

   public  void getConnection() throws SQLException {
        DruidDataSource source=new DruidDataSource();
        source.setDriverClassName("com.mysql.cj.jdbc.Driver");
        source.setUrl("jdbc:mysql://localhost:3306/test");
        source.setUsername("root");
        source.setPassword("password");
        DruidPooledConnection conn = source.getConnection();
        System.out.println(conn);
    }

当然也可以去封装一个,然后再来使用。
最后使用apche封装的方法,再来进行使用,真实便捷,但是没关系,我以及学完了,源码学了,其他的也学了。
以后每天尽量都更新一下jdbc,大家都可以来支出错误。

上一篇:Java下载多个网络文件并打成压缩包


下一篇:数据爬取存储到MySQL中