JDBC

//////////2016-12-5 ~ 2016-12-6///////////

int study_data(){

JDBC(Java DataBase Connectivity):

一种执行SQL语句的Java API

JDBC三件事:建立数据库连接,发送SQL语句,返回处理结果

JDBC模型:

JDBC API:提供了应用程序对JDBC的管理连接

JDBC Driver API:支持JDBC管理到驱动器连接

JDBC常见组件:

DriverManager(类):管理数据库驱动程序的列表

Driver(接口):处理与数据库服务器通信

Connection(接口):接触数据库的所有方法

Statement:可以使用这个接口常见的对象的SQL语句提交到数据库

ResultSet:这些对象保存到数据库后,执行使用上对象的SQL查询中检索数据

SQLException:发生在一个数据库应用程序的任何错误

Driver Manager:

管理JDBC的基本服务,注册数据库驱动程序,建立连接等

内部维护一个Driver队列

任何数据库驱动程序需要实现向驱动管理器注册自身的静态代码块

Class.forName(driver_class)加载驱动

Connection:

实例通过启动管理器获得

连接数据库管理系统提供应用程序基本的操作数据的方法

Statement:

用于把SQL语句发送到DBMS

由Connection对象汇总的creatStatement方法所创建

对查询语句来说,可以使用executeQuery()

对于创建,删除,修改语句,使用的方法是executeUpdate()

execute(),executeQuery(),executeUpdate()的区别:

executeQuery():

用于产生单个结果集的语句,例如 SELECT 语句

executeUpdate():

用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。

execute():

用于执行返回多个结果集、多个更新计数或二者组合的语句。

execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。

ResultSet:

数据库结果集的数据表,通常通过执行查询数据库的语句生成

ResultSet对象生命依赖于创建他的Statement

ResultSet提供一个可向前或向后移动的游标

ResultSet接口提供用于从当前检索列值的获取方法检索列编号从1开始

ResultSet可用于更新或插入塑聚,但不建议使用

PreparedStatement:

继承自Statement接口,每一个实例中包含已编译的SQL语句

由Connection实例的prepareStatement()创建

对于Statement对象拥有更快的执行效率

提供参数化查询方法,避免发生SQL注入攻击

SQL注入攻击(SQL Injection):

源自程序当中的SQL语句拼接

拼接特定的字符串时SQL语句当中的条件查询失效

CallableStatement:

对象为所有的饿DBMS提供了一种以标准行事调用存储过程的方法

继承自PreparedStatement,同样含有预编译的SQL

由Connection实例的prepareCall()方法长生实例对象

提供结果参数(OUT类型的输出参数)

JDBC批处理:

JDBC批处理是JDBC性能改进的主要手段

Statement.addBatch():

Statement.addBatch(String sql):将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。通过调用方 法 executeBatch 可以批量执行此列表中的命令。

Statement.executeBatch():将一批命令提交给数据库来执行,如果全部命令执行成功, 则返回更新计数组成的数组。

JDBC驱动就是JDBC API吗?

API 是一个标准的功能列表或参考实现方法,它是接口。

JDBC 驱动则是实现这些功能的类库,它是实现。

比如 API 会说 statement.executeQuery("select 1 from dual");

而驱动程序则要求把用户期望的功能实现它,

这时 oracle 和 DB2 或 mysql 驱动程序实现的方法就会不一样。

你可能感兴趣的:(JDBC)