您的位置:首页 > 编程语言 > Java开发

JDBC—Java的数据库连接

2012-05-30 11:05 225 查看
JDBC:Java DataBase Connectivity(Java 数据库连接技术),它是将Java与SQL结合且独立于特定的数据库系统的应用程序编程接口(API--它是一种可用于执行SQL语句的Java API,即由一组用Java语言编写的类与接口所组成)。

JDBC的主要功能:(1)创建与数据库的连接;(2)发送SQL语句到任何关系型数据库中;(3)处理数据并查询结果。

JDBC与ODBC的对比,从而体会JDBC的特点

(1)ODBC是用C语言编写的,不是面向对象的;而JDBC是用Java编写的,是面向对象的。

(2)ODBC难以学习,因为它把简单的功能与高级功能组合在一起,即便是简单的查询也会带有复杂的任选项;而JDBC的设计使得简单的事情用简单的做法来完成。

(3)ODBC是局限于某一系统平台的,而JDBC提供Java与平台无关的解决方案。

(4)但也可以通过Java来操作ODBC,这可以采用JDBc-ODBC桥接方式来实现(因为Java不能直接使用ODBC,即在Java中使用本地C的代码将带来安全缺陷)。

JDBC驱动程序的类型: 目前比较常见的JDBC驱动程序可分为以下四个种类:

(1)JDBC-ODBC桥加ODBC驱动程序

JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。

JDBC-ODBC 桥接方式利用微软的开放数据库互连接口(ODBC API)同数据库服务器通讯,客户端计算机首先应该安装并配置ODBC driver 和JDBC-ODBC bridge两种驱动程序。

(2)本地API

这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。

这种驱动方式将数据库厂商的特殊协议转换成Java代码及二进制类码,使Java 数据库客户方与数据库服务器方通信。例如:Oracle用SQLNet协议,DB2用IBM 的数据库协议。数据库厂商的特殊协议也应该被安装在客户机上。

(3)JDBC网络纯Java驱动程序

这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。

这种方式是纯Java driver。数据库客户以标准网络协议(如HTTP、SHTTP)同数据库访问服务器通信,数据库访问服务器然后翻译标准网络协议成为数据库厂商的专有特殊数据库访问协议(也可能用到ODBC
driver)与数据库通信。对Internet
和Intranet
用户而言这是一个理想的解决方案。Java driver
被自动的,以透明的方式随Applets自Web服务器而下载并安装在用户的计算机上。


(4)本地协议纯Java驱动程序

这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。

这种方式也是纯Java driver。数据库厂商提供了特殊的JDBC协议使Java数据库客户与数据库服务器通信。然而,将把代理协议同数据库服务器通信改用数据库厂商的特殊JDBC
driver。这对Intranet
应用是高效的,可是数据库厂商的协议可能不被防火墙支持,缺乏防火墙支持在Internet
应用中会存在潜在的安全隐患。


在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();



ODBC桥接方式;其它为数据库的位置表示。

装载mySQL JDBC驱动程序

Class.forName("org.gjt.mm.mysql.Driver ");

String url

="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"

  //testDB为你的数据库名

  Connection conn= DriverManager.getConnection(url);


装载Oracle JDBC OCI驱动程序(用thin模式)

Class.forName("oracle.jdbc.driver.OracleDriver ");

String url="jdbc:oracle:thin:@localhost:1521:orcl";

  //orcl为你的数据库的SID

  String user="scott";

  String password="tiger";

  Connection conn= DriverManager.getConnection(url,user,password);


注意:也可以通过con.setCatalog("MyDatabase")来加载数据库。

装载DB2驱动程序

Class.forName("com.ibm.db2.jdbc.app.DB2Driver")

String url="jdbc:db2://localhost:5000/sample";

  //sample为你的数据库名

  String user="admin";

  String password="";

  Connection conn= DriverManager.getConnection(url,user,password);



装载MicroSoft SQLServer驱动程序

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver ");

String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";

  //pubs为你的数据库的

  String user="sa";

  String password="";   

  Connection conn= DriverManager.getConnection(url,user,password);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: