元数据
元数据MetaData : 指数据库中 库、表、列的定义信息 1、DataBaseMetaData 数据库元数据
1、通过DataBaseMetaData获得 数据库连接的基本参数
• getURL():返回一个String类对象,代表数据库的URL。 • getUserName():返回连接当前数据库管理系统的用户名。 • getDriverName():返回驱动驱动程序的名称。
• getPrimaryKeys(String catalog, String schema, String table):返回指定
表主键的 结果集
2、获得数据库、表、列、主键、外键 定义信息
getTables getColumns getPrimaryKeys
2、ParameterMetaData 参数元数据
PreparedStatement . getParameterMetaData()
• 获得代表PreparedStatement元数据的ParameterMetaData对象。 • Select * from user where name=? And password=?
ParameterMetaData对象
• getParameterCount()
• 获得指定参数的个数
• getParameterTypeName(int param)
• 获得指定参数的sql类型
3、ResultSetMetaData 结果集元数据(重点..)
ResultSet. getMetaData()
• 获得代表ResultSet对象元数据的ResultSetMetaData对象。
ResultSetMetaData对象
• getColumnCount()
• 返回resultset对象的列数
• getColumnName(int column)
• 获得指定列的名称
• getColumnTypeName(int column)
• 获得指定列的类型
Dbutil框架
Dbutil介绍
commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC
的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。 API介绍:
• org.apache.commons.dbutils.QueryRunner --- 核心
• org.apache.commons.dbutils.ResultSetHandler • 工具类
• org.apache.commons.dbutils.DbUtils、。
DBUtils学习
1、QueryRunner 框架核心类 ,所有数据库操作都是必须通过 QueryRunner 进行的 2、ResultSetHandler 结果集封装接口,完成将ResultSet 结果集 封装为一个Java对象 3、DbUtils 工具类 提供驱动管理、事务管理、释放资源等一系列公共方法
DbUtils
DbUtils :提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有
方法都是静态的。主要方法如下:
• public static void close(…) throws java.sql.SQLException: DbUtils类提供了
三个重载的关闭方法。这些方法检查所提供的参数是不是NULL,如果不是的话,它们就关闭Connection、Statement和ResultSet。
• public static void closeQuietly(…): 这一类方法不仅能在Connection、
Statement和ResultSet为NULL情况下避免关闭,还能隐藏一些在程序中抛出的SQLException。
• public static void commitAndCloseQuietly(Connection conn): 用来提交连接,
然后关闭连接,并且在关闭连接时不抛出SQL异常。
• public static boolean loadDriver(java.lang.String driverClassName):这一方装载
并注册JDBC驱动程序,如果成功就返回true。使用该方法,你不需要捕捉这个异常ClassNotFoundException。
QueryRunner
该类简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的
数据库操作,能够大大减少编码量。 QueryRunner类提供了两个构造方法:
• 默认的构造方法(手动管理事务)
• 需要一个 javax.sql.DataSource 来作参数的构造方法。(自动管理事物)
更新操作
• public int update(Connection conn, String sql, Object... params) • public int update(String sql, Object... params)
查询操作
• public Object query(Connection conn, String sql, ResultSetHandler Object... params) • public Object query(String sql, ResultSetHandler ResultSetHandler 该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。 ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql.ResultSet .rs)。 ResultSetHandler 在DBUtils 框架中提供九个默认 实现类,直接使用九个默认实现类,可以完成常规操作,而不需要自定义结果集封装 1) ArrayHandler 和 ArrayListHandler 将数据表的每行记录保存Object[] 中 2) BeanHandler 和 BeanListHandler 将数据表每行记录 保存JavaBean对象中 * 封装javabean属性时,必须保证数据表列名与 javabean属性名一致,否则无法封装 3) MapHandler和 MapListHandler 将结果每行记录保存到一个Map集合,key是列名,value是值 4) ColumnListHandler 查询结果集中指定一列数据 5) KeyedHandler(name) 结果集每行数据封装map,再将map存入另一个map 作为value,指定一列作为key 6) ScalarHandler 进行单值查询 select count(*) from account; 案例(客户信息管理系统) 字段名 Id name gender birthday cellphone email preference type description 说明 编号 客户姓名 性别 生日 手机 电子邮件 客户爱好 客户类型 备注 类型 varchar(40) varchar(20) varchar(10) date varchar(20) varchar(40) varchar(100) varchar(40) varchar(255) create table customer( id varchar(40) primary key, name varchar(20), gender varchar(10), birthday date, cellphone varchar(20), email varchar(40), preference varchar(100), type varchar(40), description varchar(255) ); 搭建web project环境 JavaEE 三层结构 Servlet + JSP + JavaBean+jstl + DBUtils+ DAO + MySQL 导入jar包 :JSTL 、BeanUtils、DBUtils、C3P0、mysql驱动 创建包结构 cn.itcast.customer.web 表现层 cn.itcast.customer.service 业务层 cn.itcast.customer.dao 持久层 cn.itcast.customer.utils 工具包 cn.itcast.customer.domain 实体类 javaBean 应用的jar文件 1. mysql驱动包 2. c3po包 3. dbutils包 4. BeanUtil包 5. JSTL包 6. c3p0的配置文件 编写公共程序 domain utils Customer 类 实体类 DataSourceUtils 工具类 因篇幅问题不能全部显示,请点此查看更多更全内容