日期:2014-05-16  浏览次数:20513 次

jdbc的工作原因

相信大家对JDBC并不陌生,编程人员可以利用JDBC向各种关系数据发送SQL语句。而且也不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序。看来有了jdbc后有很多很多的好处嘛,下面就说下JDBC工作原理、结构以及对数据库的访问,希望对大家有所帮助。

JDBC的工作原理
?? JDBC的设计基于X/Open SQL CLI(调用级接口)这一模型。它通过定义出一组 API对象和方法以用于同数据库进行交互。

在Java程序中要操作数据库,一般应该通过如下几步(利用JDBC访问数据库的编程步骤):
(1)加载连接数据库的驱动程序?Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
(2)创建与数据源的连接
?String url="jdbc:odbc:DatabaseDSN";??
?Connection con=DriverManager.getConnection(url,"Login","Password");
(3)查询数据库:创建Statement对象并执行SQL语句以返回一个ResultSet对象。
?Statement stmt=con.createStatement();
?ResultSet rs=stmt.executeQuery("select * from DBTableName");?
(4)获得当前记录集中的某一记录的各个字段的值
??? String name=rs.getString("Name");
??? int age=rs.getInt("age");
??? float wage=rs.getFloat("wage");
(5)关闭查询语句及与数据库的连接(注意关闭的顺序先rs再stmt最后为con)
??? rs.close();????
??? stmt.close();
??? con.close();?
JDBC的结构
?? JDBC主要包含两部分:面向Java程序员的JDBC API及面向数据库厂商的JDBC Drive API。
(1)面向Java程序员的JDBC API:Java程序员通过调用此API从而实现连接数据库、执行SQL语句并返回结果集等编程数据库的能力,它主要是由一系列的接口定义所构成。
java.sql.DriveManager:该接口主要定义了用来处理装载驱动程序并且为创建新的数据库连接提供支持。
java.sql.Connection:该接口主要定义了实现对某一种指定数据库连接的功能。
java.sql.Statement:该接口主要定义了在一个给定的连接中作为SQL语句执行声明的容器以实现对数据库的操作。它主要包含有如下的两种子类型。
??? java.sql.PreparedStatement:该接口主要定义了用于执行带或不带 IN 参数的预编译 SQL 语句。
??? java.sql.CallableStatement:该接口主要定义了用于执行数据库的存储过程的雕用。
java.sql.ResultSet:该接口主要定义了用于执行对数据库的操作所返回的结果集。
(2)面向数据库厂商的JDBC Drive API:数据库厂商必须提供相应的驱动程序并实现JDBC API所要求的基本接口(每个数据库系统厂商必须提供对DriveManager、Connection、Statement、ResultSet等接口的具体实现),从而最终保证Java程序员通过JDBC实现对不同的数据库操作。

通过JDBC 实现对数据库的访问
(1)引用必要的包
?import java.sql.*;? //它包含有操作数据库的各个类与接口???
(2)加载连接数据库的驱动程序类?
??? 为实现与特定的数据库相连接,JDBC必须加载相应的驱动程序类。这通常可以采用Class.forName()方法显式地加载一个驱动程序类,由驱动程序负责向DriverManager登记注册并在与数据库相连接时,DriverManager将使用此驱动程序。
????? Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
注意:这条语句直接加载了sun公司提供的JDBC-ODBC Bridge驱动程序类。
(3)创建与数据源的连接
?String url="jdbc:odbc:DatabaseDSN";??
?Connection con=DriverManager.getConnection(url,"Login","Password");