您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > JAVA程序设计技能教程第11章
Java程序设计技能教程主编彭德林李德有中国水利水电出版社章数据库编程任务一:使用JDBC连接数据库任务三:数据库编程任务二:建立数据源任务四:实训十一数据库编程实训11.1任务一使用JDBC连接数据库11.1.1JDBC简介1.JDBC概述JDBC(JavaDatabaseConnectivity,即Java数据库连接),是一种在Java应用程序中访问数据库的综合技术,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成,主要提供三方面的功能:建立同数据库的连接,然后向数据库发送SQL语句,处理从数据库中返回的SQL执行结果。图4-1简单的条件语句JDBC在Web和Internet应用程序中的作用和ODBC在Windows系列平台应用程序中的作用类似,但ODBC只针对Windows平台,而且ODBC需要在客户机上安装和注册,因而维护成本相对较大。而JDBC是由Java语言编写的,使得JDBC代码可在所有Java平台上运行,这样使得程序的可移植性和安全性显著提高了。应用程序通过相应接口(API)访问数据库,JDBC是Java应用程序访问数据库的通用接口,称为JDBCAPI。使用JDBC来完成对数据库的访问包括以下四个主要组件:Java的应用程序、JDBC驱动器管理器、驱动器和数据源。图11-1JDBC框架图Java数据库应用程序JDBC驱动程序管理器JDBC驱动器数据库DBMSJDBCAPIJDBCDriverAPISQL命令2.JDBC的结构(1)、面向应用程序设计的JDBCAPI:它主要是由一系列的接口组成,通过调用此API从而实现连接数据库、执行SQL语句并返回结果集等编程数据库的能力,如:java.sql.DriveManager:该接口主要定义了用来处理装载驱动程序并且为创建新的数据库连接提供支持。java.sql.Connection:该接口主要定义了实现对某一种指定数据库连接的功能。java.sql.Statement:该接口主要定义了在一个给定的连接中作为SQL语句执行声明的容器以实现对数据库的操作。它主要包含有如下的两种子类型。java.sql.PreparedStatement:该接口主要定义了用于执行带或不带IN参数的预编译SQL语句。java.sql.CallableStatement:该接口主要定义了用于执行数据库的存储过程的雕用。java.sql.ResultSet:该接口主要定义了用于执行对数据库的操作所返回的结果集。(2)、面向数据库厂商的JDBCDriveAPI:数据库厂商必须提供相应的驱动程序并实现JDBCAPI所要求的基本接口(每个数据库系统厂商必须提供对DriveManager、Connection、Statement、ResultSet等接口的具体实现),从而最终保证Java程序员通过JDBC实现对不同的数据库操作。11.1.2JDBC驱动目前比较常见的JDBC驱动程序可分为以下四个种类型:1.JDBC-ODBC桥接通过JDBC-ODBC桥接可以很容易地使用JDBC访问ODBC数据源。JDBC-ODBC桥接方式是利用微软的开放数据库互连接口(ODBCAPI)同数据库服务器通讯的,它要求客户端上都要安装ODBC驱动,同时还要求配置ODBC数据源。这种连接方式虽然简单但效率低。这种类型的驱动程序最适合于企业网络,或者是用Java编写的三层结构的应用程序服务器代码。2.部分Java的本地API驱动程序这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。它比第一种驱动要快。3.JDBC网络纯Java驱动程序这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。此种驱动很适合Internet应4.本地协议纯Java驱动程序11.2任务二建立数据源11.2.1建立Access数据库1.ACCESS数据库的设计在设计数据库时要确定设计数据库的目的、库中需要的表及表中需要的字段。每张表只包含关于一个主题的信息,在设计表时,应注意:明确有唯一值的字段确定表间的关系优化设计添加数据和新建其他数据库对象根据用户需求,表的结构设计完成后,就可以继续创建所需的任何查询、窗体、报表、宏和模块等。2.表的创建及操作Access提供了四种创建空表的方法:(1)、使用数据库向导,可以在一个操作中创建整个数据库所需的全部表、窗体及报表。数据库向导用于新建数据库,但不能用来将新表、窗体或报表添加到已有的数据库中。(2)、使用表向导来选择表的字段,这些字段可以从各种各样预先定义好的表中选择。(3)、将数据直接输入到空白的数据表中。当保存新的数据表时,Access将分析数据并且自动为每一字段指定适当的数据类型及格式。(4)、使用“设计”视图从无到有指定表的全部细节。创建了数据表后,可以针对表进行添加记录、定位记录、编辑数据、插入记录、选择记录、删除记录和记录的复制等操作了。11.2.2建立数据源1.在windowxp系统中,单击【开始】-【设置】-【控制面板】-【管理工具】。2.在弹出的窗口中双击打开【数据源ODBC】应用程序图标,再在打开的【ODBC数据源管理器】窗口中选择【系统DSN】标签。3.单击【添加】按钮,在弹出的对话框中选择【MicrosoftAccessDriver(*.mdb)】标签。4.点击【完成】后,在弹出的Access数据源设置对话框中,输入【数据源名】为”mylibDB”,然后单击【选择】按钮,找到刚才建立的数据库(即E盘jpp文件夹下的library.mdb文件),选中它并确定即可。(如果想设置访问密码,可以单击【高级】按钮,会弹出“高级设置选项”对话框)。5.单击确定后,ODBC数据源的设置就完成了。11.3任务三数据库编程11.3.1数据库编程过程1.JDBC数据库编程用到的相关类和接口(1)、DriverManager类:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接。方法如下:Class.forName(Stringdriver):加载注册驱动程序。StaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException:取得对数据库的连接。StaticDrivergetDriver(Stringurl)throwsSQLExcetion:在已经向DriverManager注册的驱动程序中寻找一个能够打开url所指定的数据库的驱动程序。(2)、Connection类Connection对象是通过DriverManager.getConnection()方法获得的,主要负责维护JSP/JAVA数据库程序和数据库之间的联机,建立Java程序与数据库之间的连接,并生成三个非常有用的类对象:Statement类对象、DatabaseMetaData类对象和PreparedStatement类对象。建立Statement类对象的方法如下:StatementcreateStatement()throwsSQLException;StatementcreateStatement(intresultSetType,intresultSetConcurrency)throwsSQLException;建立DatabaseMetaData类对象的方法如下:DatabaseMetaDatagetMetaData()throwsSQLException;建立PreparedStatement类对象的方法如下:PreparedStatementprepareStatement(Stringsql)throwsSQLException;(3)、Statement类Statement类用于将SQL语句发送到已连接的数据库中,通过Statement类所提供的方法(见表11-4),可以利用标准的SQL命令,对数据库直接新增、删除或修改等操作。(4)、PreparedStatement类PreparedStatement类和Statement类的不同之处在于PreparedStatement类对象会将传入的SQL命令事先编好等待使用,当有单一的SQL指令比多次执行时,用PreparedStatement类会比Statement类有效率。(5)、DatabaseMetaData类DatabaseMetaData类保存了数据库的所有特性,并且提供许多方法(见表11-6)来取得这些信息。(6)、ResultSet类ResultSet类是Statement类招待SQL语句后生成的记录集。可以认为它是一个二维的表格,主要负责存储查询数据库的结果。并提供一系列的方法(见表11-7)对数据库进行新增、删除和修改操作。也负责维护一个记录指针(Cursor),记录指针指向数据表中的某个记录,通过适当的移动记录指针,可以随心所欲的存取数据库,加强程序的效率。(7)、ResultSetMetaData类ResultSetMetaData类对象保存了所有ResultSet类对象中关于字段的信息,提供许多方法(见表11-8)来取得这些信息:2.数据库访问过程(1)、首先装载驱动程序装载驱动程序DriverManager类使用Class类的forName方法。语法如下:Class.forName(driver)或Class.forName(driver).newInstance()根据需要装载的驱动的不同,具体方法也不同。这里是加载ODBC-JDBC桥接的例子:StringjdbcDriver=sun.jdbc.odbc.JdbcOdbcDrivertry{Class.forName(jdbcDriver);}catch(java.lang.ClassNotFoundExceptione){System.out.println(类未找到错误!+e);}注意:装载驱动程序要处理异常。(2)、建立连接指定装载的数据库驱动程序后,可用DriverManager类来进行数据源或数据库的连接。DriverManager类是JDBC基础,用来管理JDBC驱动程序。该类有静态的getConnection()方法,用于验证JDBC数据源,并返回接口Connection对象。使用JDBC-ODBC桥接器的例子:Connectioncon=DriverManager.getConnection(jdbc:odbc:mylibDB);其中的mylibDB为建立的数据源的名称。根据需要装载的驱动的不同,具体的连接方法也不同。A、这里是加载mySQLJDBC驱动程序Class.forName(org.gjt.mm.mysql.Driver).newInstance();Stringurl=jdbc:mysql://localhost/myDB?user=mymouse&password=mouse2008&useUnicode=true&characterEncoding=8859_1Connectioncon=DriverManager.getConnection(url)B、装载OracleJDBCOCI驱动程序(用thin模式)Class.forName(oracle.jdbc.driver.OracleDriver);Stringurl=jdbc:oracle:thin:@localhost:1521:orcl“;Stri
本文标题:JAVA程序设计技能教程第11章
链接地址:https://www.777doc.com/doc-2878852 .html