1.1 案例三:手动抽取一个DBUtils的工具类:1.1.1 需求:每次进行JDBC的CURD的操作的时候,有很多的代码都是相似的.可以不可以抽取工具类.完成一些通用性的代码?1.1.2 分析:1.1.2.1 技术分析:【JDBC的元数据MataData】(了解)-- 编写通用性较高的代码.Ø DatabaseMetaData:获得数据库连接的信息,获得数据库的表的信息. * 获得数据库元数据:Connection中getMetaData(); Ø ParameterMetaData:获得SQL中的参数的个数及类型. * 获得参数元数据:PreparedStatement中getParameterMetaData() Ø ResultSetMetaData:获得结果集中的列名及列的类型. * 获得结果集元数据:ResultSet中getMeta() 【元数据的使用】@Test /** * 数据库元数据 */ public void demo1(){ Connection conn = null; conn = JDBCUtils2.getConnection(); // 获得数据库元数据: try { DatabaseMetaData metaData = conn.getMetaData(); System.out.println("获得驱动名称:"+metaData.getDriverName()); System.out.println("获得驱动URL:"+metaData.getURL()); System.out.println("获得用户名:"+metaData.getUserName()); // 获得表中的主键: ResultSet rs = metaData.getPrimaryKeys(null, null, "category"); if(rs.next()){ String name = rs.getString("COLUMN_NAME"); System.out.println(name); } } catch (SQLException e) { e.printStackTrace(); } } @Test /** * 参数元数据: */ public void demo2(){ Connection conn = null; PreparedStatement stmt = null; try{ conn = JDBCUtils2.getConnection(); String sql = "update category set cname = ? where cid = ?"; stmt = conn.prepareStatement(sql); ParameterMetaData metaData = stmt.getParameterMetaData(); int count = metaData.getParameterCount(); System.out.println(count); }catch(Exception e){ } } @Test /** * 结果集元数据: */ public void demo3(){ Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try{ conn = JDBCUtils2.getConnection(); String sql = "select * from category"; stmt = conn.prepareStatement(sql); rs = stmt.executeQuery(); ResultSetMetaData metaData = rs.getMetaData(); int count = metaData.getColumnCount(); for(int i = 1;i<=count ;i++){ String name = metaData.getColumnName(i); String type = metaData.getColumnTypeName(i); System.out.println(name+type); } }catch(Exception e){ } }