1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2023/5/24,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2023/5/24,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2023/5/24,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2023/5/24,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2023/5/24,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级
2、第三级,第四级,第五级,2023/5/24,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2023/5/24,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2023/5/24,*,第,7,章,JSP,中使用数据库,2023/5/24,1,学习目的与要求,理解,JDBC,应用程序编程接口;,掌握使用纯,Java,驱动程序操作数据库的编程方法;,掌握对数据的增加、删除、修改和查询编程技术;,查询记录的分页面显示;,数据库连接池编程技术。,2023/5/24,2,本章主要内容,7.1 JDBC,概述,7.2 JDB
3、C,应用程序接口简介,7.3,利用,JDBC,访问数据库,7.4,数据库操作案例,7.5,上机实训,7.6,本 章 习 题,2023/5/24,3,7.1 JDBC,概述,7.1.1,什么是,JDBC,JDBC,是,Java,数据库连接(,Java Data Base Connectivity,)技术的简称,指,Java,同许多数据库之间连接的一种标准。,JDBC,为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的,JavaAPI,,使开发人员可以用纯,Java,语言编写完整的数据库应用程序。,简单地说,,JDBC,能够完成下列三件事:,与一个数据库建立连接(,connection,
4、向数据库发送,SQL,语句(,statement,)。,处理数据库返回的结果(,resultset,)。,2023/5/24,4,7.1 JDBC,概述,7.1.2 JDBC,的构成,1.JDBC API,:定义了标准接口,无论编写,Mysql,还是,Oracle,等数据库程序,这些接口是一致的。,2.JDBC,数据库驱动程序,2023/5/24,5,7.2 JDBC,应用程序接口简介,7.2.1 DrvierManager,类,提供管理一组,JDBC,驱动程序所需要的基本服务,可以跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。,该类的常用方法有:,getConnectio
5、n,和,forName,方法。,public static,Connection,getConnection(String url,String user,String password),public static,Class,forName(,String,className),2023/5/24,6,7.2 JDBC,应用程序接口简介,DrvierManager,类的使用法:,(,1,)加载驱动,例如:,Class.forName(com.mysql.jdbc.Driver);,(,2,)与数据库建立连接,DriverManager.getConnection(String url,St
6、ring user,String password);,2023/5/24,7,7.2 JDBC,应用程序接口简介,对,getConnection,函数中的参数解释:,url,参数的命名方法:,url,由,3,部分组成,各部分间用冒号分隔,如下所示:,jdbc:,其中:,jdbc,协议名称。在,JDBC URL,中的协议总是,jdbc,。,驱动程序名或数据库连接机制的名称。如“,odbc,”,它是用于指定,ODBC,风格的数据库资源名称的,URL,而保留的。,一种标识数据库的方法。子名称可以依不同的子协议而变化。它还可以有子名称的子名称(含有驱动程序编程人员所选的任何内部语法)。使用子名称的目
7、的是为定位数据库提供足够的信息。,2023/5/24,8,7.2 JDBC,应用程序接口简介,7.2.2 Connection,接口,Connection,接口是,java.sql,包中最重要的接口。,Connection,对象代表与数据库的连接。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。,数据库连接一旦建立,就可用来向它所涉及的数据库发送,SQL,语句。,Connection,的作用是创建向数据库发送,SQL,语句的三个接口。这三个接口分别是:,Statement,接口,PreparedStatement,接口,CallableStatement,接口。,2023
8、/5/24,9,7.2 JDBC,应用程序接口简介,7.2.2 Connection,接口,Connection,接口提供了多个同名但是参数不同的方法创建以上的三个接口。,例如:,public Statement createStatement();,public Statement createStatement(int,resultSetType,int,resultSetConcurrency,);,其中:参数,resultSetType,指返回记录集的类型,resultSetConcurrency,指发送的,SQL,语句的权限,2023/5/24,10,7.2 JDBC,应用程序接口简
9、介,7.2.2 Connection,接口,常用的一些方法:,boolean isClosed(),:用于判断,Connection,对象是否已经被关闭;,void commit(),:用于提交,SQL,语句,确认从上一次提交以来所进行的修改;,void close(),:断开连接,释放资源;,void rollback(),:取消,SQL,语句,取消当前事务中进行的修改。,DatabaseMetaData getMetaData(),:获取一个,DatabaseMetaData,对象。,2023/5/24,11,7.2 JDBC,应用程序接口简介,7.2.3 Statement,接口,Sta
10、tement,接口对象创建完毕后,主要使用以下方法:,public,ResultSet,executeQuery(,String,sql),:用于执行产生单个结果集的语句,如,select,。,public int executeUpdate(,String,sql),:用于执行,insert,、,update,或,delete,语句以及,SQL DLL,(数据定义)语句。当执行,insert,、,update,或,delete,语句时将返回一个整数,用于表示受影响的行数,返回结果为,0,时表示操作失败;当执行,SQL DLL,语句,如,create table,时,由于它不操作行,返回值将总
11、为,0,。,2023/5/24,12,7.2 JDBC,应用程序接口简介,7.2.3 Statement,接口,public boolean execute(,String,sql),:用于执行返回多个结果集、多个更新计数或二者结合的,SQL,语句。,public int executeBatch(),:用于执行几个,SQL,语句。,Statement,接口使用,addBatch(String sql),方法将几个,SQL,语句添加到一个语句块中,然后一同提交给数据库服务器,同时执行。当执行多个,SQL insert,语句时效率将很高,因为一次提交比多次提交要节省很多系统资源。,void cl
12、ose(),:释放,Satement,对象的数据库和,JDBC,资源。,2023/5/24,13,7.2 JDBC,应用程序接口简介,7.2.3 Statement,接口,PreparedStatement,接口对象主要使用以下方法:,public ResultSet executeQuery(String sql),:使用,Select,命名对数据库进行查询。,public int executeUpdate(String sql),:用于执行,insert,、,update,或,delete,语句对数据库进行新增、删除和修改操作。,void setXXX(int parameterInde
13、x,XXX x),:设定,XXX,数据类型值给,PreparedStatement,类对象的,IN,参数。,2023/5/24,14,7.2 JDBC,应用程序接口简介,7.2.3 Statement,接口,CallableStatement,接口主要用于执行存储过程,其主要方法同,Statement,。存储过程有两种参数,,IN,参数和,OUT,参数。,CallableStatement,接口继承了,PerpareedStatement,接口的,setXXX,方法对,IN,参数赋值。在,CallableStatement,接口中使用,OUT,参数,要做两件事情,一是对,OUT,参数进行类型注
14、册,二是获取,OUT,参数的值。,CallableStatement,提供了多种方法进行类型注册,下面是常用的两种:,registerOutParameter(String parameterStringName,int sqlType);,registerOutParameter(String parameterStringName,int sqlType,,,int scale);,2023/5/24,15,7.2 JDBC,应用程序接口简介,7.2.4,数据结果集,ResultSet,接口,ResultSet,接口用于获取执行,SQL,语句(或数据库存储过程)返回的结果。它的实例对象是符
15、合,SQL,语句条件的所有行。,常用的方法有:,public boolean next(),:用于数据库游标移动到结果集的下一行,使之成为当前行。如果当前行为最后一行,返回值为,false,;否则,返回,true,。,在定位到结果集中的某行后,就可以读取数据。对于不同数据类型,要使用不同的读取方法,getXXX(),。,JDBC,提供了两种形式:,2023/5/24,16,7.2 JDBC,应用程序接口简介,7.2.4,数据结果集,ResultSet,接口,public,XXX,getXXX(,String,columnName),:,XXX,代表任意的数据类型,参数,columnName,代
16、表列名。,public XXX getXXX(int columnIndex),:,XXX,代表任意的数据类型,参数,columnIndex,代表列号。,ResultSetMetaData getMetaData(),:获取结果集的列编号、类型和属性,下面是,ResultSet,接口的示例:,2023/5/24,17,private Statement stmt=null;,private ResultSet rs=null;,private PreparedStatement prpSql=null;,Class.forName(com.mysql.jdbc.Driver);,Connect
17、ion conn=,DriverManager.getConnection(jdbc:mysql:/localhost:,端口号,/,数据库名称,用户名,密码,);,stmt=conn.createStatement();,rs=stmt.executeUpdate(select*from database);,while(rs.next(),rs.getString(1);,rs.close(),;,stmt.close();,conn.close();,2023/5/24,18,7.2 JDBC,应用程序接口简介,7.2.5,数据库元数据,-DatabaseMetaData,和,Resul
18、tSetMetaData,DatabaseMetaData,接口可以从数据库管理系统中获得数据库的信息,例如数据库所有的表名、存储过程名等信息。这个类提供了许多方法来取得这些信息,常用的方法如下:,String getDatabaseProductName(),:获得数据库的名称。,ResultSet getCooumns(String databasename,String dboname,String tablename,String columnname),:获得表字段信息,以列的方式存储在一个,ResultSet,对象中。,2023/5/24,19,7.2 JDBC,应用程序接口简介,
19、7.2.5,数据库元数据,-DatabaseMetaData,和,ResultSetMetaData,ResultSetMetaData,接口用来获取数据库表的结构。通过它提供的一些常用方法,可以获得,ResultSet,对象中的类型和属性信息的对象。常用方法如下:,int getColumnType(int column),:检索指定列的,SQL,类型;,String getTableName(int column),:获取指定列的名称;,2023/5/24,20,7.3,利用,JDBC,访问数据库,所有的利用,JDBC,访问数据库的程序都具有以下的流程:,加载,JDBC,驱动程序,建立和数
20、据库的连接,执行,SQL,语句,存放处理结果,与数据库断开连接,2023/5/24,21,7.3,利用,JDBC,访问数据库,7.3.1,通过,JDBC-ODBC,桥连接来访问数据库,可以使,JDBC,有能力访问几乎所有类型的数据库。下面通过一个例子介绍:,1,、首先建立一个,access,数据库,数据库名称为:,book,,保存数据库文件。,2023/5/24,22,7.3,利用,JDBC,访问数据库,7.3.1,通过,JDBC-ODBC,桥连接来访问数据库,2,、配置数据源,首先要配置,ODBC,数据源。选择数据源(,ODBC,)(,Win 2000,在管理工具中;,Win XP,在控制面
21、板中),先看图片,在现场演示。,2023/5/24,23,在管理工具中,选择“数据源”,在对话框中选择用户,dsn,,添加,2023/5/24,24,在对话框中选择,access driver,(,*,。,Mdb,),单击“完成”。,在数据源名称输入“,book,”。,选择数据库为,book,。,2023/5/24,25,选择图书管理数据库,.mdb,权限默认,在登录用户名输入对应的用户名和密码。,2023/5/24,26,7.3,利用,JDBC,访问数据库,7.3.1,通过,JDBC-ODBC,桥连接来访问数据库,3,编写相应的程序,(,1,)加载数据库的驱动程序,(,2,)建立连接,(,3
22、向数据库发送,SQL,语句,(,4,)处理查询结果,(,5,)关闭数据库连接,2023/5/24,27,7.3,利用,JDBC,访问数据库,7.3.1,通过,JDBC-ODBC,桥连接来访问数据库,【,例,7.1】,利用,JDBC-ODBC,桥连接数据库,执行,SQL,语句,并在数据库中插入一条记录。,2023/5/24,28,ch7_1.jsp,文件内容如下:,0)out.println(,添加成功,);,else out.println(,添加失败,);,rs=stmt.executeQuery(select*from book);,2023/5/24,30,out.print();,
23、out.print();,out.print(+,书号,);,out.print(+,书名,);,out.print(+,作者,);,out.print(+,出版社,);,out.print(+,单价,);,out.print();,2023/5/24,31,while(rs.next(),out.print();,out.print(+rs.getString(1)+);,out.print(+rs.getString(2)+);,out.print(+rs.getString(3)+);,out.print(+rs.getString(publish)+);,out.print(+rs.g
24、etFloat(price)+);,out.print();,out.print();,stmt.close();/,关闭数据库,conn.close();,2023/5/24,32,catch(Exception e),out.println(e.toString();,%,2023/5/24,33,7.3,利用,JDBC,访问数据库,7.3.2,利用本地协议纯,Java,驱动程序连接数据库,1.,安装,mysql,数据库,从网上下载,mysql-5.0.22-win32.zip,,将,mysql,安装到了,E:mysql,目录中。,2.,启动,mysql,cd e:mysqlbin,mys
25、qld-nt,2023/5/24,34,7.3,利用,JDBC,访问数据库,7.3.2,利用本地协议纯,Java,驱动程序连接数据库,2023/5/24,35,7.3,利用,JDBC,访问数据库,7.3.2,利用本地协议纯,Java,驱动程序连接数据库,3.,启动,mysql,监视器,用户再启动一个,MS-DOS,窗口,切换到,E:MYSQLBIN,目录中,执行如下命令:,e:,cd mysql,cd bin,mysql-u root,2023/5/24,36,7.3,利用,JDBC,访问数据库,7.3.2,利用本地协议纯,Java,驱动程序连接数据库,2023/5/24,37,7.3,利用,
26、JDBC,访问数据库,7.3.2,利用本地协议纯,Java,驱动程序连接数据库,4.,创建数据库,启动,mysql,监视器后,可以在提示符下输入,sql,语句来创建数据库和表,,sql,语句结束必须使用“,;,”符号。在编辑,sql,语句的过程中可以使用,/c,终止当前,sql,语句的编辑。,在,mysql,监视器提示符下,输入创建图书管理数据库,booklib,的,SQL,语句并执行,,2023/5/24,38,7.3,利用,JDBC,访问数据库,7.3.2,利用本地协议纯,Java,驱动程序连接数据库,2023/5/24,39,7.3,利用,JDBC,访问数据库,7.3.2,利用本地协议纯
27、Java,驱动程序连接数据库,5.,创建数据库中的表,在,booklib,数据库中创建,book,表的,SQL,语句为:,CREATE TABLE book(,bid char(20)NOT NULL,name char(20)default NULL,author char(10)default NULL,publish varchar(50)default NULL,price float default NULL,PRIMARY KEY (bid),)ENGINE=InnoDB DEFAULT CHARSET=utf8;,2023/5/24,40,7.3,利用,JDBC,访问数据库,7
28、3.2,利用本地协议纯,Java,驱动程序连接数据库,5.,创建数据库中的表,2023/5/24,41,7.3,利用,JDBC,访问数据库,7.3.2,利用本地协议纯,Java,驱动程序连接数据库,6.,编写相应的程序,-,连接,mysql,数据库,try Class.forName(com.mysql.jdbc.Driver);,try/,和数据库建立连接,conn=DriverManager.getConnection(,jdbc:mysql:/localhost:3306/booklib,root,);,conn.close();,catch(Exception e),out.prin
29、tln(e.toString();,2023/5/24,42,7.3,利用,JDBC,访问数据库,7.3.2,利用本地协议纯,Java,驱动程序连接数据库,【,例,7.2】,利用纯,Java,驱动程序连接,mysql,数据库,查询,book,表中的所有记录,2023/5/24,43,2023/5/24,44,2023/5/24,45,2023/5/24,46,连接不同的数据库,除,Class.forName(),中的驱动程序类及,url,的书写方式不同之外,其他所有部分均相同。,2023/5/24,47,7.3,利用,JDBC,访问数据库,7.3.3,配置和连接不同的数据库,1.,连接,Ora
30、cle,数据库,安装完,Oracle,后,找到文件,classes12.zip,(可以在,Oracle,安装目录搜索得到),将该文件复制到,Java JDK,的子目录,/jre/lib/ext,目录中,并其更名为,classes.jre,或,cleasses.jar,。,Class.forName(oracle.jdbc.driver.OracleDriver);,DriverManager.getConnection(jdbc:oracle:thinhost,:端口号:数据库名,用户名,密码,);,2023/5/24,48,7.3,利用,JDBC,访问数据库,7.3.3,配置和连接不同的数据
31、库,2.,连接,Sql Server,数据库,下载,sqljdbc_1.1.1501.101_enu.exe,驱动安装文件。,找到,sqljdbc.jar,文件,将其复制到,Tomcat,所使用的,JDK,的,jrelibext,目录中。连接方法:,Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);,DriverManager.getConnection(,jdbc:sqlserver:/172.0.0.1:1443;DatabaseName=,数据库名,“,用户名,”,“,密码,”,);,2023/5/24,49,提示:,
32、如果应用程序和要连接的,Sql Server2000,服务器在不同的计算机上,可以使用,Sql Server 2000,服务器的,ip,地址,例如,192.168.1.1,。如果应用程序无法和,Sql Server2000,连接,可能需要更新,Sql Server 2000,服务器。用户可以从微软网站下载补丁,sqlsp4.rar,,安装该补丁即可。,7.3,利用,JDBC,访问数据库,2023/5/24,50,7.4,数据库操作案例,7.4.1,查询数据,1.,顺序查询数据,ResultSet rs=stmt.executeQuery(select bid,name,author,publi
33、sh,price from book);,对于结果集,rs,的列数为,5,列,第一列对用,bid,,第二列对应,name,,第三列对应,author,,第四列对应,publish,,第五列对应,price,;而每一次,rs,只能看到一行,要在看到下一行,必须使用,next(),方法移动当前行。,ResultSet,对象使用,getXXX(),方法获得当前行字段的值。,下面是一个实例:,2023/5/24,51,2023/5/24,52,QueryBean.java,代码,2023/5/24,53,ch7_3.jsp,文件内容:,2023/5/24,54,7.4,数据库操作案例,2.,随机查询,
34、如果需要在结果集中前后移动或随机显示某一条记录,这时就必须得到一个可以滚动的结果集。得到滚动结果集的方法如下:,Statement stmt=conn.createStatement(int type,int concurrency);,ResultSet rs=stmt.executeQuery(sqlstr);,其中,type,的取值决定结果集的滚动方式,可以取下列值:,2023/5/24,55,7.4,数据库操作案例,2.,随机查询,ResultSet.TYPE_FORWORD_ONLY,:结果集的游标只能向下移动。,ResultSet.TYPE_SCROLL_INSENSITIVE,:
35、结果集的游标可以上下移动,当数据库的数据变化时,当前结果集不变。,ResultSet.TYPE_SCROLL_SENSITIVE,:结果集的游标可以上下移动,当数据库的数据变化时,当前结果集同步变化。,2023/5/24,56,7.4,数据库操作案例,2.,随机查询,滚动结果集,ResultSet,对象可以使用的方法如下:,public boolean previous(),:将游标向上移动,当移动到结果集第一行之前返回,false,。,public void beforeFirst(),:将游标移到结果集第一行之前。,public void afterLast(),:将游标移到结果集最后一行
36、之后。,public void first(),:将游标移到结果集的第一行。,public void last(),:将游标移到结果集的最后一行。,public boolean isAfterLast(),:判断游标是否在结果集的最后一行之后。,2023/5/24,57,7.4,数据库操作案例,2.,随机查询,滚动结果集,ResultSet,对象可以使用的方法如下:,public boolean isBeforeFirst(),:判断游标是否在结果集第一行之前。,public boolean isFirst(),:判断游标是否在结果集第一行。,public boolean isLast(),:
37、判断游标是否在结果集的最后一行。,public int getRow(),:得到当前游标所在的行,行号从,1,开始,如果结果集没有行,则返回,0,。,public boolean absolute(int row),:将游标移到到,row,所指定的行,,row,取负值则倒数,如,-1,,则移动到最后一行。,2023/5/24,58,7.4,数据库操作案例,2.,随机查询,【,例,7.4】,随机查询示例。,2023/5/24,59,RandomQuerybean.java,2023/5/24,60,ch7_3.jsp,文件内容:,2023/5/24,61,7.4,数据库操作案例,3.,条件查询,
38、在顺序查询和随机查询中得到的是表中的全部记录。如果要得到表中满足条件的记录,就要采用条件查询。条件查询是由客户端提供查询条件,即查询的参数,再由这些参数构造,SQL,语句,执行该语句并得到筛选结果的查询。,下面的例子根据用户选择的字段和输入的关键字查询图书信息,如果没有输入关键字则显示所有图书的信息。,2023/5/24,62,7.4,数据库操作案例,3.,条件查询,【,例,7.5】,条件查询图书信息,2023/5/24,63,keyQueryBean.java,2023/5/24,64,ch7_5.jsp,文件内容:,2023/5/24,65,7.4,数据库操作案例,7.4.2,更新查询,S
39、tatement,对象提供了,int executeUpdate(String sqlStatement),方法,用于实现对数据库中数据的添加、删除和更新操作。,sqlStatement,参数是由,insert,、,delete,和,update,等关键字构成的,Sql,语句。函数返回值为查询所影响的行数,失败返回,0,。,例如添加记录的,sql,语句:,String sqlStatement=insert book values(tp1004,高数,杨,清华出版社,35),;,2023/5/24,66,7.4,数据库操作案例,7.4.2,更新查询,stmt.executeUpdate(sql
40、Statement);,例如更新记录的,sql,语句:,String sqlStatement=update book set name=,新值,where bid=tp1001;,stmt.executeUpdate(sqlStatement);,例如删除记录的,sql,语句:,String sqlStatement=delete from book where bid=tp1001;,stmt.executeUpdate(sqlStatement);,2023/5/24,67,7.4,数据库操作案例,7.4.2,更新查询,1,、添加记录,【,例,7.6】,向,mysql,数据库中的表追加记
41、录,2023/5/24,68,addBean.java,2023/5/24,69,ch7_6.jsp,文件内容:,2023/5/24,70,7.4,数据库操作案例,7.4.2,更新查询,2,、删除记录,【,例,7.7】,删除,book,表中的记录。,2023/5/24,71,listBean.java,2023/5/24,72,deleteBean.java,2023/5/24,73,ch7_7.jsp,文件内容:,2023/5/24,74,7.4,数据库操作案例,7.4.2,更新查询,3.,修改记录,【,例,7.8】,修改记录,页面如图效果如图所示:,2023/5/24,75,创建存储过程的
42、sql,代码如下:,use booklib,delimiter$,create procedure update_book_p(in p_bid char(20),in p_name char(20),in p_author char(10),in p_publish varchar(50),in p_price float),reads sql data,begin,update book set name=p_name,author=p_author,publish=p_publish,price=p_price,where bid=p_bid;,end$,delimiter;,2023
43、/5/24,76,7.4,数据库操作案例,2023/5/24,77,showBean.java,2023/5/24,78,三个页面代码:,2023/5/24,79,第三个页面上的,Javabean,代码:,2023/5/24,80,7.4,数据库操作案例,7.4.3,分页查询,分页显示程序中可以使用,CachedRowSetImpl,类,,CachedRowSetImpl,对象可以保存,ResultSet,对象中的数据,它不依赖与,Connection,对象,并且继承了,ResultSet,的所有方法。,CachedRowSetImpl,类在,com.sun.rowset,包中。,使用,Cac
44、hedRowSetImpl,对象的代码如下:,2023/5/24,81,7.4,数据库操作案例,7.4.3,分页查询,import com.sun.rowse.*;,ResultSet rs=stmt.executeQuery(select*from book);,CachedRowSetImpl rowSet=new CachedRowSetImpl();,rowSet.populate(rs);,while(rowSet.next(),rowSet.getString(1);,2023/5/24,82,7.4,数据库操作案例,7.4.3,分页查询,【,例,7.9】,数据库记录的分页显示,2
45、023/5/24,83,showbypageBean.java,2023/5/24,84,ch7_3.jsp,文件内容:,2023/5/24,85,7.4,数据库操作案例,7.4.4,使用连接池,所谓数据库连接池就是为数据库连接建立一个“存储池”。类似“蓄水池”。,1.,在,tomcat6.0,上配置连接池,用任意一种文本编辑器打开,tomcat6.0,安装目录下,conf,子目录中的,server.xml,文件,在文档内容中的,之前加入如下配置:,2023/5/24,86,7.4,数据库操作案例,7.4.4,使用连接池,2023/5/24,87,7.4,数据库操作案例,7.4.4,使用连接池
46、name,项是,JNDI,的名称定义,程序通过,JNDI,才能找到此对象,这里取名为“,jdbc/dataBook,”,;,auth,项即连接池管理权限,这里取值为,Container,,声明为容器管理,此连接池为容器管理池,对应,ch7,服务目录。,type,项即对象类型,这里取值为,javax.sql.DataSource,,声明为数据库连接池。,driverClassName,项为数据库驱动程序。,url,项为数据库连接地址。,username,为连接用户名。,password,为连接用户密码。,maxActive,为最大连接数,,maxIdle,为最小连接数。,2023/5/24,8
47、8,7.4,数据库操作案例,7.4.4,使用连接池示例,【,例,7.10】,使用连接池操作数据库。,2023/5/24,89,ch7_10.jsp,文件内容:,2023/5/24,90,7.5,上机实训,实训目的,理解,JDBC,编程接口。,掌握利用,JDBC,访问数据库的方法。,掌握对表中数据的增、删、改、查编程技术。,掌握连接池的使用技术。,掌握查询结果的分页显示技术。,2023/5/24,91,7.5,上机实训,实训内容,实训,1,编写一个简单的图书管理系统。,要求:,(1),建立一个图书管理数据库,booklib,,库中有一个,book,表。,(2),完成一个管理系统主界面,主界面功能包括添加图书、修改图书、删除图书和查询图书等功能的链接。,(3),参照本章示例,完成图书管理系统各链接的功能。,2023/5/24,92,7.6,本 章 习 题,思考题,(1),什么是,JDBC,编程接口?,(2),什么是数据库连接池?,(3),使用纯,Java,驱动操作,mysql,数据库的步骤?,(3),加载,Sql Server 2000,纯,Java,驱动程序的代码是什么?,(4),使用预处理语句和存储过程有什么好处?,(5),使用,CachedRowSetImpl,类有什么好处?,(6),如何使用滚动的结果集?,2023/5/24,93,






