您的位置:首页 > 其它

JDBC学习1-整体框架

2011-02-23 16:01 218 查看
Java Database Connectivity 一组抽象于各个数据库的接口规范,用统一的接口方式消除数据库之间的差异。虽然JDBC统一了调用方式,但是各个数据库厂商需要根据自己的数据库实现这组接口,所以在进行开发前需要获得各个数据库厂商提供JDBC驱动类。

进行JDBC开发的流程大致如下:

注册Driver类--获取数据库链接(Connection)--创建SQL环境(Statement)--执行获取结果集(ResultSet)--操作结果集--关闭连接

Connection conn = null;
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//获取连接
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "111111");
//创建SQL环境
Statement st = conn.createStatement();
//执行查询获取结果集
ResultSet rs = st.executeQuery("select * from user");
//获取结果集相关信息
ResultSetMetaData rsMetaData = rs.getMetaData();
int colNum = rsMetaData.getColumnCount();
//操作结果集
while(rs.next()){
System.out.print("/nRecode# ");
for(int i = 1; i <= colNum; i++){
System.out.print(rsMetaData.getColumnName(i)+":" + rs.getObject(i) + "/t");
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭连接
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


一. 注册Driver类

注册Driver类有以下3种方法,效果相同,都会在DriveManager类中记录Drive信息。

1. Class.forName(DriverClassName); 此加载方式会执行Driver的静态代码块。也可

Class.forName(DriverClassName).newInstance();保证完整的初始化

2. new Driver();如new com.mysql.jdbc.Driver();相当于Class.forName(DriverClassName).newInstance();

3. DriverManager.registerDriver(new Driver())

二. 获取连接

conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "111111");

1. DriverManager.getConnection()实际上调用的是Driver.getConnection();

2. url的格式各个数据库不一样 大致为: jdbc:subprotocol:locate.

Mysql: jdbc:mysql://ip:port/sid

Oracle: jdbc:oracle:thin:@ip:port:sid

三. 获取结果信息

ResultSet 只能获取结果集里面的结果,无法获取结果集的基本信息,如有多少列,列名等。所以需要使用ResultSetMetaData,需要注意的是在ResultSetMetaData里面列的编号从1开始。

四. 释放连接

关闭连接最好在finally块里执行,这样就是操作抛出异常也能关闭连接。理论上关闭了Connection,Statement和ResultSet会自动关闭。

JDBC的大致类图如下:

没有用图权限,日他哥的。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: