什么是JDBC?
Java语言访问数据库的一种规范,是一套API。JDBC(Java Database Connectivity)API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连接、执行SQL语句进行数据的存取操作。
JDBC规范采用接口和实现分离的思想设计了Java数据库编程的框架。 为了使客户端程序独立于特定的数据库驱动程序,JDBC规范建议开发者使用基于接口的编程方式。
什么是JDBC驱动程序?
是各个数据库厂家根据JDBC的规范制作的JDBC实现类。
JDBC驱动程序的四种类型:
1.第一种类型的驱动程序的实现是通过将JDBC的调用全部委托给其它编程接口来实现的,比如ODBC。这种类型的驱动程序需要安装本地代码库,即依赖于本地的程序,所以便携性较差。比如JDBC-ODBC桥驱动程序
2. 第二种类型的驱动程序的实现是部分基于Java语言的。即该驱动程序一部分是用Java语言编写,其它部分委托本地的数据库的客户端代码来实现。同类型1的驱动一样,该类型的驱动程序也依赖本地的程序,所以便携性较差
3. 第三种类型的驱动程序的实现是全部基于JAVA语言的。该类型的驱动程序通常由某个中间件服务器提供,这样客户端程序可以使用数据库无关的协议和中间件服务器进行通信,中间件服务器再将客户端的JDBC调用转发给数据库进行处理
4.第四种类型的驱动程序的实现是全部基于JAVA语言的。该类型的驱动程序中包含了特定数据库的访问协议,使得客户端可以直接和数据库进行通信
JAVA使用JDBC访问数据库的步骤(与ODBC使用基本类似):
1.得到数据库驱动程序
2.创建数据库连接
3. 执行SQL语句
4.得到结果集
5.对结果集做相应的处理(增,删,改,查)
6.关闭资源:这里释放的是DB中的资源
PS:Oracle连接字符串的书写格式:“oracle:jdbc:thin:@ip:1521: 数据库名”,”数据库用户名”,”数据库密码”
简单的例子:
public void TestJdbc() { String sql = "select * from test_user"; Connection con = null; Statement st = null; ResultSet rs = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection( "jdbc:oracle:thin:@127.0.0.1:1521:name", "root", "123456"); st = con.createStatement(); rs = st.executeQuery(sql); while (rs.next()) { System.out.println(rs.getInt("id")); System.out.println(rs.getString("name")); } } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (Exception e) { } try { st.close(); } catch (Exception e) { } try { rs.close(); } catch (Exception e) { } } }
与ODBC比较:
JDBC和ODBC其实都是用来连接数据库的驱动程序。ODBC中文名字叫做开放数据库互联,是微软技术人员开发的开放服务结构中有关数据库的一个组成部分,它建立一组相关的规范,并提供了一组对数据库访问的标准应用程序编程接口。简单的说,ODBC就是应用程序与数据库系统进行交互的工具。所有的数据库操作由对应的数据库系统的ODBC驱动程序来完成。从而可以实现以同一的方式来处理所有的数据库。
JDBC与ODBC类似,也是一个应用程序与数据库进行通信的中介。只是他们的开发商不同而已。JDBC是由Sun公司向关系型数据库系统厂商提供JDBC的规格与需求;然后各大厂商遵循标准规格设计出符合自己数据库产品的JDBC驱动程序。JDBC的总体结构类似于ODBC,有四个组件:应用程序、驱动程序管理器、驱动程序和数据源,工作原理亦大体同于ODBC.
区别:
1.JDBC要比ODBC容易理解。
2.JDBC数据库驱动程序是面向对象的。
3.JDBC的移植性要比ODBC要好
总之JDBC与ODBC都是数据库的驱动程序,它们的本质是相同的,都是为了处理SQL语句而设计的。而且JDBC在设计的时候,其也是在ODBC的基础上进行设计的,并保留了ODBC数据库驱动程序的部分功能。或者说,我们可以把JDBC看作是ODBC的另一个高级版本也未尝不可。JDBC主要在操作上、友好性上做了一定的改进。