第8章 Web应用数据库接口 8.1 数据库访问接口 根据图7.1所示的Web服务器端编程模型可知,Web应用系统的数据主要存储在数据库系统中,通过数据库访问接口进行访问。数据库系统的管理和维护由数据库系统管理员(DBA)来进行,数据的安全性得到了保证。常用的各种关系型数据库系统有SQL Server、MySQL、Oracle、DB2等。当客户系统与数据库系统建立通信连接后,就可以采用标准SQL语句访问数据库了。各厂家都实现了自己的数据库系统驱动程序,可完成与客户系统通信、SQL命令的解释和执行等功能,这样的数据库驱动程序称为一级数据库驱动程序(底层驱动程序)。 实际应用中,为了适应数据库系统变更后程序移植的简单性,Sun公司开发了高层数据库访问接口——JDBC(Java Database Connectivity),此接口对不同的数据库系统进行了高层抽象和封装,提供一个统一的访问数据库接口,开发人员可以使用此接口在更高层次访问各种类型的数据库系统。开发人员通过类库来使用此接口,类库共包含java.sql、javax.sql两个包,在程序源代码中使用import指令导入类库。使用JDBC API访问各种类型的数据库系统图如图8.1所示。 图8.1 使用JDBC API访问各种类型的数据库系统图 8.2 JDBC API主要接口和类 JDBC API提供了建立数据库连接、释放数据库连接、发送SQL命令语句、接收SQL执行结果集等功能的接口和类。最常使用的接口和类是Driver接口、DriverManager类、Connection接口、Statement接口、PreparedStatement 接口、CallableStatement接口、ResultSet 接口。 下面逐一介绍这些接口和类的使用方法。 (1) ?Driver接口。每一个具体的Driver类必须实现该Driver接口。每一个驱动程序应该提供一个实现该接口的类。 (2) ?DriverManager类。DriverManager类会试着装载它能够发现的多个驱动程序。对于给定的连接请求,DriverManager类会轮流请求每个驱动程序去试着连接目标URL指定的数据库系统。每个实现Driver接口的Driver类代码应该简短、独立,这样可使Driver类能够在不带有大量的支持代码的情况下被装载和查询。这是实现该接口的驱动程序时需要注意的地方。 当一个驱动类被装载时,它会创建一个自己的实例,并在DriverManager中注册。开发人员通过使用Class.forName(foo.bah.Driver); 这样的调用语句来实现装载和注册一个驱动。forName方法的参数为驱动程序类的字符串。 装载和注册JDBC-ODBC Bridge驱动程序的语句是: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); 装载和注册JDBC Driver驱动程序的语句是: Class.forName(“jdbc.driver_class_name”); 例如: import java.sql.*; //load MS SQL Server Driver Class.forName(“com.microsoft.jdbc.sqlserver. SQLServerDriver”); //load MySQL JDBC Driver Class.forName(org.gjt.mm.mysql.Driver); //load Oracle JDBC Driver Class.forName(“oracle.jdbc.driver.OracleDriver”); DirverManager类提供了一个管理JDBC驱动程序集的基本的服务类。在JDBC 2.0 API中,通过DataSource 接口提供了连接数据源的另外一种方法。使用DataSource对象是连接一个数据源的更好的方式。 作为数据源初始化的一部分,DirverManager类会尝试装载在“jdbc.drivers”系统属性中提到的驱动类。利用这种方式,允许用户通过应用程序定制多个JDBC驱动。应用程序可以在任何时候通过Class.forName(String strDriverClassName)语句显式地装载多个JDBC驱动程序。 当DirverManager的getConnection()方法被调用时,DirverManager会从那些开始就装载的和使用相同的类装载器显式装载的驱动中尝试着本地化一个合适的驱动作为当前
您可能关注的文档
- (DSP处理器原理与应用)第10章软件项目开发辅助工具.ppt
- (NET程序设计与开发)第1章技术导读.ppt
- (NET程序设计与开发)第2章VisualStudio2005集成开发环境简介.ppt
- (NET程序设计与开发)第4章常用的服务器控件.ppt
- (NET程序设计与开发)第5章验证控件.ppt
- (NET程序设计与开发)第7章SqlDataSource数据源控件.ppt
- (PLC应用技术课件)项目三PLC步进顺控指令及其应用.ppt
- (PLC应用技术课件)项目五PLC模拟量控制.ppt
- (Web开发技术)第1章Web技术概述.ppt
- (Web开发技术)第2章Web应用程序开发环境简介.ppt
- 山西天一大联考2025-2026学年高二上学期期末学情监测语文试题(试卷+解析).docx
- 山西忻州部分学校2025-2026学年高一上学期2月质量检测数学试题(人教B版)(试卷+解析).docx
- 山西运城市2025-2026学年高二第一学期期末调研测试数学试题(试卷+解析).docx
- 陕西省榆林市榆阳区2025-2026学年八年级上学期期末地理试题(试卷+解析).docx
- 陕西西安市碑林区2025-2026学年度第一学期期末八年级生物试题(试卷+解析).docx
- 四川省广元市苍溪县2025-2026年八年级上学期期末道德与法治试题(试卷+解析).docx
- 江苏泰州市姜堰区2025-2026学年七年级上学期1月期末数学试题(试卷+解析).docx
- 江苏省扬州市邗江区2025-2026学年九年级上学期期末考试化学试题(试卷+解析).docx
- 江西上饶市铅山县2025-2026学年第一学期期末考试八年级数学试题(试卷+解析).docx
- 江苏扬州市高邮市2025-2026学年度第一学期期末学业质量监测试题九年级英语(试卷+解析).docx
原创力文档

文档评论(0)