http://zh.wikipedia.org/wiki/Java数据库连接
http://lavasoft.blog.51cto.com/62575/20588
http://blog.csdn.net/cxwen78/article/details/6863696
http://www.ibm.com/developerworks/cn/java/jdbc-objects/index.html ca=drs
http://www.moon-soft.com/doc/37897.htm
目录
1. Java JDBC简介
2. Java JDBC下执行SQL的不同方式
3. Java JDBC编程实践
1. Java JDBC简介
数据库驱动程序是JDBC程序和数据库之间的转换层,数据库驱动程序负责将JDBC调用映射成特定的数据库调用,类似PHP中的"数据库抽象层"
使用Java JDBC API进行编程,可以为多种关系数据库提供统一访问,为我们带来跨平台、跨数据库系统的好处
总的来说,JDBC驱动通常有如下4种类型
复制代码
1. JDBC-ODPC桥:
它将JDBC API映射到ODPC API。再让JDBC-ODPC调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)
2. 本地API驱动
直接将JDBC API映射成数据库特定的客户端API,即通过客户端加载数据库厂商提供的本地代码库(C/C++等)
3. 网络协议驱动
这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
4. 本地协议驱动
这种类型的驱动使用Socket,直接在客户端和数据库间通信。它是一种直接与数据库实例交互的JDBC
这种驱动是智能的,它知道数据库使用的底层协议,也是目前最主流使用的JDBC驱动,我们本章的重点就是它
复制代码
JDBC编程(连接数据库)步骤
复制代码
1) 加载数据库驱动
通常我们使用Class类的forName()静态方法来加载驱动(由各个数据库厂商自己实现)
Class.forName("com.mysql.jdbc.Driver");
Class.forName("oracle.jdbc.driver.OracleDriver");
"com.mysql.jdbc.Driver"、"oracle.jdbc.driver.OracleDriver"代表了数据库驱动类对应的字符串
2) 通过DriverManager获取数据库连接
DriverManager.getConnection(String url, String user, String pass);
2.1) url: 数据库连接字符串
2.1.1) Mysql
jdbc:mysql://hostname:port/databasename
jdbc:oracle:thin:@hostname:port:databasename
2.2) user: 数据库的系统用户名
2.3) pass: 数据库的系统密码
3) 通过Connection对象创建Statement对象,Connection创建Statement对象的方法有如下3个
3.1) createStatement(String sql):创建基本的Statement对象
3.2) prepareStatement(String sql): 根据传入的SQL语句创建预编译的Statement对象
3.3) prepareCall(String sql): 根据传入的SQL语句创建CallableStatement对象
4) 使用Statement执行SQL语句
所有的Statement都有如下3个方法来执行SQL语句
4.1) execute(): 可以执行任何SQL语句,但比较麻烦
4.2) executeUpdate(): 主要用于执行DML和DDL语句。执行DML语句返回受SQL影响的行数,执行DDL语句返回0
4.3) executeQuery(): 只能执行查询语句,执行后返回代表查询结果的ResultSet对象
5) 操作结果集
如果执行的SQL语句是查询语句,则执行结果将返回一个ResultSet对象,该对象里保存了SQL语句查询的结果。程序可以通过操作该ResultSet对象来取出查询结果。ResultSet对象主要提供了如
下方法
5.1) 移动记录指针的方法
5.1.1) next()
5.1.2) previous()
5.1.3) first()
5.1.4) last()
5.1.5) beforeFirst()
5.1.6) afterLast()
5.1.7) absolute()
5.2) 获取指针指向的某行的"特定的列值"
5.2.1) getInt()
5.2.2) getString()
...
该方法既可以使用列索引作为参数,也可以使用列名作为参数
6) 回收数据库资源
包括关闭ResultSet、Statement、Connection等资源
复制代码
2. Java JDBC下执行SQL的不同方式
JDBC是一个相对比较底层的API接口,它只提供给我们一个执行原生SQL语句的输入接口。所以和JDBC的API接口都定义在
java.sql
javax.sql
我们知道,Java JDBC编程中有3种方法进行DDL、DML语句的执行
复制代码
1. createStatement
返回Statement
1) execute()
2) executeUpdate()
3) executeQuery()
2. prepareStatement
返回PrepareStatement
1) execute()
2) executeUpdate()
3) executeQuery()
3. prepareCall
返回CallableStatement
复制代码
我们来逐一学习
0x1: 基本的Statement对象
Statement提供了3个方法来执行SQL语句,它们都可以用于执行DDL(执行后返回值为0)、DML(执行后返回受影响行数)语句
使用execute执行DDL、DML语句
Statement的execute()方法几乎可以执行任何原生SQL