如果要了解 J2EE 的知识,就不可避免的接触到 13 种规范.作为规范之一的 JDBC 吸引起了我的注意,因为我比较了解 ODBC .
所以这篇文章,就先说说 JDBC ,然后咱们再聊聊 ODBC ,最后再对比说一下,这样印象更深刻一些.
JDBC
JDBC ( Java DataBase Connectivity , Java 数据库连接)是一种用于执行 SQL 语句的 Java API ,可以为多种关系数据库提供统一访问,由一组用 Java 语言编写的类和接口组成.
使用 JDBC 的步骤:加载 JDBC 驱动程序 -->建立数据库连接 Connection -->创建执行 SQL 的语句 Statement -->处理执行结果 ResultSet -->释放资源
既然是和数据库相关,就不可避免谈谈 JDBC 常用接口:
- 1 , Driver 接口
Driver 接口由数据库厂家提供,作为java开发人员,只需要使用 Driver 接口就可以了.在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序,不同的数据库有不同的装载方法. - 2 , Connection 接口
connection 与特定数据库的连接,在连接上下文中执行 sql 语句并返回结果. DriverManager.getConnection(url, user, password) 方法建立在 JDBC URL 中定义的数据库 Connection 连接上.
常用方法:
createStatement() :创建向数据库发送 sql 的 statement 对象
prepareStatement(sql) :创建向数据库发送预编译 sql 的 PrepareSatement 对象
prepareCall(sql) :创建执行存储过程的 callableStatement 对象
setAutoCommit(boolean autoCommit) :设置事务是否自动提交
commit() :在链接上提交事务
rollback() :在此链接上回滚事务
- 3 , Statement 接口
用于执行静态 SQL 语句并返回它所生成结果的对象
常用的 Statement 方法:
execute(String sql) :运行语句,返回是否有结果集
executeQuery(String sql) :运行 select 语句,返回 ResultSet 结果集
executeUpdate(String sql) :运行 insert/update/delete 操作,返回更新的行数
addBatch(String sql) :把多条 sql 语句放到一个批处理中
executeBatch() :向数据库发送一批 sql 语句执行
- 4 , ResultSet 接口
ResultSet 提供检索不同类型字段的方法,常用的有:
getString(int index),getString(String columnName) :获得在数据库里是 varchar,char 等类型的数据对象
getFloat(int index),getFloat(String columnName) :获得在数据库里是 Float 类型的数据对象
getDate(int index),getDate(String columnName) :获得在数据库里是 Date 类型的数据
getBoolean(int index),getBoolean(String columnName) :获得在数据库里是 Boolean 类型的数据
getObject(int index),getObject(String columnName) :获取在数据库里任意类型的数据
使用之后,依次关闭的对象及连接为: ResultSet --> Statement --> Connection
ODBC
在上面说了 JDBC ,我觉得看到 JDBC ,应该能够想到 ODBC ,所以接下来咱们聊聊 ODBC .
ODBC ( Open Database Connectivity )开放数据库连接,是为了解决异构数据库间的数据共享而产生的,用于对数据库的访问.
ODBC 实际上是一个数据库访问函数库,这样可以使得程序可以直接操纵数据库中的数据. ODBC 是基于 SQL 语言的,是一种在 SQL 和应用界面之间的标准接口,这样就免除了应用软件随着数据库的改变而进行改变的麻烦.
所以 ODBC 的一个显著优点就是:它生成的程序与数据库或数据库引擎是无关的,这样就为数据库用户和开发人员屏蔽了异构环境的复杂性,提供了数据库访问的一个统一接口,也就使得应用程序实现与平台的无关性和可移植性成为了可能.
- 应用程序( Application ),主要任务有:连接数据库,提交 SQL 语句给数据库,检索结果并处理错误,提交或者回滚 SQL 语句的事务,与数据库断开连接
- 驱动程序管理器 ( Driver Manager ):每种数据库引擎都需要向 ODBC 驱动程序管理器注册自己的 ODBC 驱动程序,这种驱动程序对于不同的数据库引擎是不同的. ODBC 驱动程序管理器能将与 ODBC 兼容的 SQL 请求从应用程序传给驱动程序,随后由驱动程序把对数据库的操作翻译成相应数据库引擎所提供的固有调用,对数据库实现访问操作.
- 驱动程序:驱动程序是一个用于支持 ODBC 函数调用的模块,应用程序调用驱动程序所支持的函数来操纵数据库.若想使应用程序操作不同类型的数据库,就要动态连接到不同的驱动程序上. ODBC 驱动程序处理 ODBC 函数调用,将应用程序的 SQL 请求提交给指定的数据源,接受由数据源返回的结果,传回给应用程序.
- 数据源:是用户,应用程序要访问的数据文件或数据库,以及访问他们需要的有关信息.它定义了数据库服务器的名称,登录名和密码等选项
JDBC 与 ODBC
先说说 JDBC 和 ODBC 的联系.
JDBC 和 ODBC 都是用来连接数据库的启动程序, JDBC 和 ODBC 由于具有数据库独立性甚至平台无关性,因而对 Internet 上异构数据库的访问提供了很好的支持.
接下来,说说 JDBC 与 ODBC 的区别(参考自:Difference between ODBC and JDBC):
ODBC | JDBC |
---|---|
ODBC Stands for Open Database Connectivity. | JDBC Stands for java database connectivity. |
Introduced by Microsoft in 1992. | Introduced by SUN Micro Systems in 1997. |
We can use ODBC for any language like C,C++,Java etc. | We can use JDBC only for Java languages. |
We can choose ODBC only windows platform. | We can Use JDBC in any platform. |
Mostly ODBC Driver developed in native languages like C,C++. | JDBC Stands for java database connectivity. |
For Java applications it is not recommended to use ODBC because performance will be down due to internal conversion and applications will become platform Dependent. | For Java application it is highly recommended to use JDBC because there we no performance & platform dependent problem. |
ODBC is procedural. | JDBC is object oriented. |
你如果跟我说,看不明白,那就踏实学英语去吧!
以上,感谢您的阅读~