Jdbc

一、概述

JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构造的API

  Jdbc从物理结构上说就是Java语言访问数据库的一套接口集合

  从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议。

 

驱动程序按照工作方式分为四类:
   1、JDBC-ODBC bridge + ODBC 驱动

      JDBC-ODBC bridge 桥驱动将JDBC调用翻译成ODBC调用,再由ODBC驱动翻译成访问数据库命令。

      优点:可以利用现存的ODBC数据源来访问数据库

      缺点:从效率和安全性的角度来说比较差。不适合用于实际项目。

  2、基本于本地API的部分Java驱动

     应用程序通过本地协议跟数据库打交道。然后将数据库执行的结果通过驱动程序中的Java部分返回给客户端程序。

     优点:效率较高

     缺点:安全性较差

 3、纯Java的网络驱动

  (中间协议)                (本地协议)

   app            JDBC           中间服务器            DB

   缺点:两段通信,效率比较差

   优点:安全性较好

 4、纯Java本地协议:通过本地协议用纯Java直接访问数据库。

   特点:效率高,安全性好

 

二、Jdbc几个重要的接口

在Jdbc中包括了两个包:java.sql和javax.sql

(1)java.sql包:提供访问数据基本的功能。

这个包中的类和接口主要针对基本的数据库编程,如生成连接、执行语句以及准备语句和运行批处理查询等。同时

也有一些高级的处理,比如批处理更新、事务隔离和可滚动结果集等。

(2)javax.sql包:提供扩展功能

这个包中的类和接口主要为数据方面的高级操作提供接口和类。如连接管理、分布式事务和旧有的连接提供了更好

的抽象,它引入了容器管理的连接池,分成式事务和行集等。

 

API                  说明

Connection          与特定数据库的连接(会话)。能够通过getMetaDate方法获得数据库提供的信息。

                    所支持的SQL语法、存储过程和此的功能等信息。代表了数据库。

Driver              每人驱动程序类必须实现的接口,每个数据库驱动程序也都应该提供一个实现Driver接口的实现

DriverManager(Class)管理一组JDBC驱动程序的基本服务。作为初始化的一部分,此接口会尝试加载在

                     “jdbc.drivers"系统属性中引用的驱动程序。只是一个辅助类,是工具。

Statement           用于执行静态SQL语句并返回其生成结果的对象

PreparedStatement   继承Statement接口,表示预编译的SQL语句的对象,SQL语句预编译并且存储在

                    PreparedStatement对象中。然后可以使用此对象高效地多次执行该语句。

CallableStatement   用来访问数据库中存储过程。它提供了一些方法来指定语句所使用的输入/输出参数。

ResultSet           指的查询返回的数据库结果集。

ResultSetMetaData   可用于获取关于ResultSet对象中列的类型和属性信息的对象。

注:除了标出的Class,其它均为接口,每个都是‘java.sql.'包下的

 

三、JDB编程步骤

(1)注册驱动(只做一次)

(2)建立连接(Connectio)

(3)创建执行SQL的语句(Statement或PreparedStatement)

(4)执行SQL语句

(5)处理执行结果(ResultSet)

(6)释放资源

 

(一)注册驱动

A。Class.forName("com.mysql.Driver");

推荐这种方式,不会对具体的驱动类产生依赖。

B。DriverManager.registerDriver(com.mysql.jdbc.Drver");

会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

C。System.setPoroperty("jdbc.drivers","driver1:drvier2");

虽然不会对具体的驱动类产生依赖;但注册不太方便,很少使用。

 

(二)建立连接(Connection)

Connection conn = DriverMager.getConnection(url,user,passwor);

url格式:

JDBC:子协议:子名称//主机名:端口/数据库名?属性=属性值&

User,password可以用"属性=属性值"方式告诉数据库;

其他参数如:

userUnicode=true&characterEncoding=GBk

 

(三)创建执行SQL的语句(Statement)

A:Statement

Statement st = conn.createStatement();

st.executeQuery(sql);

B:PreparedStatement

String sql = "select * from table_name where col_name=?";

PreparedStatement ps = conn.preparedStatement(sql);

ps.setString(1,"col_value");

ps.executeQuery();

 

四、处理执行结果(ResultSet)

ResultSet rs = statement.executeQuery(sql);

while(rs.next){

    rs.getString("col_name");

    rs.geInter("col_name");

}

 

五、释放资源

释放ResultSet,Statement,Connection

数据库连接(Connection)非常稀有的资源,用完后必须马上释放,如果Connection不能及时正确的关闭

将导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值