连接到数据库当中,第一步,然后自己书写增删改的操作以及查询
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,大家都可以来支出错误。