1.1JDBC的概述
1.1.1JDBC简介
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标[1]。JDBC是面向关系型数据库的。
- 摘自 WIKI
1.1.2JDBC数据库驱动类型(摘自WIKI)
驱动程序类型
JDBC驱动程序共分四种类型:
- 类型1:JDBC-ODBC桥
-
这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。
-
优点:
只要有对应的ODBC驱动(大部分数据库厂商都会提供),几乎可以访问所有的数据库。 -
缺点:
执行效率比较低,不适合大数据量访问的应用;
由于需要客户端预装对应的ODBC驱动,不适合Internet/Intranet应用。
-
- 类型2:本地API驱动
-
这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中则包含了Java代码。
-
优点:
速度快于第一类驱动(但仍比不上第3、第4类驱动)。 -
缺点
由于需要客户端预装对应的数据库厂商代码库,仍不适合Internet/Intranet应用。
-
- 类型3:网络协议驱动
-
这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
-
优点:
不需要在客户端加载数据库厂商提供的代码库,单个驱动程序可以对多个数据库进行访问,可扩展性较好。 -
缺点:
在中间件层仍需对最终数据进行配置;
由于多出一个中间件层,速度不如第四类驱动程序。
-
- 类型4:本地协议驱动
-
这种类型的驱动使用Socket,直接在客户端和数据库间通信。
-
优点:
访问速度最快;
这是最直接、最纯粹的Java实现。 -
缺点:
几乎只有数据库厂商自己才能提供这种类型的JDBC驱动。
需要针对不同的数据库使用不同的驱动程序。
-
1.1.3JDBC的作用
没有JDBC的时候,如果现在要开发一套系统,使用Java连接MySQL数据库,那么这时候Java程序员需要了解MySQL驱动API,如果使用Java连接Oracle数据库,那么这个时候Java程序员需要了解Oracle数据库驱动API。
SUN公司提供一套统一的规范(接口)。然后各个数据库生产商提供这套接口的实现。这套接口规范就是JDBC的规范。
1.2 JDBC入门案例
1.2.1 创建数据库与表
create database web_test3;
use web_test3;
create table user(
id int primary key auto_increment,
username varchar(20),
password varchar(20),
nickname varchar(20),
age int
);
insert into user values (null,'aaa','123','小丽',34);
insert into user values (null,'bbb','123','大王',32);
insert into user values (null,'ccc','123','小明',28);
insert into user values (null,'ddd','123','大黄',21);
1.2.2 导入JDBC的jar包
- mysql-connector-java-5.0.8-bin.jar
- Build path 即可
1.2.3 JDBC的开发步骤
- 第一步:加载驱动
- 第二步:获得连接
- 第三步:基本操作
- 第四步:释放资源
1.2.3 JDBC入门代码案例
import org.junit.Test;
/**
* JDBC的入门程序
* @author jt
*
*/
public class JDBCDemo1 {
@Test
/**
* JDBC的入门
*/
public void demo1() throws Exception{
// 1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.获得连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/web_test3", "root", "abc");
// 3.基本操作:执行SQL
// 3.1获得执行SQL语句的对象
Statement statement = conn.createStatement();
// 3.2编写SQL语句:
String sql = "select * from user";
// 3.3执行SQL:
ResultSet rs = statement.executeQuery(sql);
// 3.4遍历结果集:
while(rs.next()){
System.out.print(rs.getInt("id")+" ");
System.out.print(rs.getString("username")+" ");
System.out.print(rs.getString("password")+" ");
System.out.print(rs.getString("nickname")+" ");
System.out.print(rs.getInt("age"));
System.out.println();
}
// 4.释放资源
rs.close();
statement.close();
conn.close();
}
}
网友评论