JSP中使用数据库ppt课件

上传人:钟*** 文档编号:5852175 上传时间:2020-02-09 格式:PPT 页数:93 大小:1.83MB
返回 下载 相关 举报
JSP中使用数据库ppt课件_第1页
第1页 / 共93页
JSP中使用数据库ppt课件_第2页
第2页 / 共93页
JSP中使用数据库ppt课件_第3页
第3页 / 共93页
点击查看更多>>
资源描述
第7章JSP中使用数据库 1 学习目的与要求 理解JDBC应用程序编程接口 掌握使用纯Java驱动程序操作数据库的编程方法 掌握对数据的增加 删除 修改和查询编程技术 查询记录的分页面显示 数据库连接池编程技术 2 本章主要内容 7 1JDBC概述7 2JDBC应用程序接口简介7 3利用JDBC访问数据库7 4数据库操作案例7 5上机实训7 6本章习题 3 7 1JDBC概述 7 1 1什么是JDBCJDBC是Java数据库连接 JavaDataBaseConnectivity 技术的简称 指Java同许多数据库之间连接的一种标准 JDBC为数据库应用开发人员 数据库前台工具开发人员提供了一种标准的JavaAPI 使开发人员可以用纯Java语言编写完整的数据库应用程序 简单地说 JDBC能够完成下列三件事 与一个数据库建立连接 connection 向数据库发送SQL语句 statement 处理数据库返回的结果 resultset 4 7 1JDBC概述 7 1 2JDBC的构成1 JDBCAPI 定义了标准接口 无论编写Mysql还是Oracle等数据库程序 这些接口是一致的 2 JDBC数据库驱动程序 5 7 2JDBC应用程序接口简介 7 2 1DrvierManager类提供管理一组JDBC驱动程序所需要的基本服务 可以跟踪可用的驱动程序 并在数据库和相应的驱动程序之间建立连接 该类的常用方法有 getConnection和forName方法 publicstaticConnectiongetConnection Stringurl Stringuser Stringpassword publicstaticClassforName StringclassName 6 7 2JDBC应用程序接口简介 DrvierManager类的使用法 1 加载驱动例如 Class forName com mysql jdbc Driver 2 与数据库建立连接DriverManager getConnection Stringurl Stringuser Stringpassword 7 7 2JDBC应用程序接口简介 对getConnection函数中的参数解释 url参数的命名方法 url由3部分组成 各部分间用冒号分隔 如下所示 jdbc 其中 jdbc 协议名称 在JDBCURL中的协议总是jdbc 驱动程序名或数据库连接机制的名称 如 odbc 它是用于指定ODBC风格的数据库资源名称的URL而保留的 一种标识数据库的方法 子名称可以依不同的子协议而变化 它还可以有子名称的子名称 含有驱动程序编程人员所选的任何内部语法 使用子名称的目的是为定位数据库提供足够的信息 8 7 2JDBC应用程序接口简介 7 2 2Connection接口Connection接口是java sql包中最重要的接口 Connection对象代表与数据库的连接 一个应用程序可与单个数据库有一个或多个连接 或者可与许多数据库有连接 数据库连接一旦建立 就可用来向它所涉及的数据库发送SQL语句 Connection的作用是创建向数据库发送SQL语句的三个接口 这三个接口分别是 Statement接口PreparedStatement接口CallableStatement接口 9 7 2JDBC应用程序接口简介 7 2 2Connection接口Connection接口提供了多个同名但是参数不同的方法创建以上的三个接口 例如 publicStatementcreateStatement publicStatementcreateStatement intresultSetType intresultSetConcurrency 其中 参数resultSetType指返回记录集的类型resultSetConcurrency指发送的SQL语句的权限 10 7 2JDBC应用程序接口简介 7 2 2Connection接口常用的一些方法 booleanisClosed 用于判断Connection对象是否已经被关闭 voidcommit 用于提交SQL语句 确认从上一次提交以来所进行的修改 voidclose 断开连接 释放资源 voidrollback 取消SQL语句 取消当前事务中进行的修改 DatabaseMetaDatagetMetaData 获取一个DatabaseMetaData对象 11 7 2JDBC应用程序接口简介 7 2 3Statement接口Statement接口对象创建完毕后 主要使用以下方法 publicResultSetexecuteQuery Stringsql 用于执行产生单个结果集的语句 如select publicintexecuteUpdate Stringsql 用于执行insert update或delete语句以及SQLDLL 数据定义 语句 当执行insert update或delete语句时将返回一个整数 用于表示受影响的行数 返回结果为0时表示操作失败 当执行SQLDLL语句 如createtable时 由于它不操作行 返回值将总为0 12 7 2JDBC应用程序接口简介 7 2 3Statement接口publicbooleanexecute Stringsql 用于执行返回多个结果集 多个更新计数或二者结合的SQL语句 publicint executeBatch 用于执行几个SQL语句 Statement接口使用addBatch Stringsql 方法将几个SQL语句添加到一个语句块中 然后一同提交给数据库服务器 同时执行 当执行多个SQLinsert语句时效率将很高 因为一次提交比多次提交要节省很多系统资源 voidclose 释放Satement对象的数据库和JDBC资源 13 7 2JDBC应用程序接口简介 7 2 3Statement接口PreparedStatement接口对象主要使用以下方法 publicResultSetexecuteQuery Stringsql 使用Select命名对数据库进行查询 publicintexecuteUpdate Stringsql 用于执行insert update或delete语句对数据库进行新增 删除和修改操作 voidsetXXX intparameterIndex XXXx 设定XXX数据类型值给PreparedStatement类对象的IN参数 14 7 2JDBC应用程序接口简介 7 2 3Statement接口CallableStatement接口主要用于执行存储过程 其主要方法同Statement 存储过程有两种参数 IN参数和OUT参数 CallableStatement接口继承了PerpareedStatement接口的setXXX方法对IN参数赋值 在CallableStatement接口中使用OUT参数 要做两件事情 一是对OUT参数进行类型注册 二是获取OUT参数的值 CallableStatement提供了多种方法进行类型注册 下面是常用的两种 registerOutParameter StringparameterStringName intsqlType registerOutParameter StringparameterStringName intsqlType intscale 15 7 2JDBC应用程序接口简介 7 2 4数据结果集 ResultSet接口ResultSet接口用于获取执行SQL语句 或数据库存储过程 返回的结果 它的实例对象是符合SQL语句条件的所有行 常用的方法有 publicbooleannext 用于数据库游标移动到结果集的下一行 使之成为当前行 如果当前行为最后一行 返回值为false 否则 返回true 在定位到结果集中的某行后 就可以读取数据 对于不同数据类型 要使用不同的读取方法getXXX JDBC提供了两种形式 16 7 2JDBC应用程序接口简介 7 2 4数据结果集 ResultSet接口publicXXXgetXXX StringcolumnName XXX代表任意的数据类型 参数columnName代表列名 publicXXXgetXXX intcolumnIndex XXX代表任意的数据类型 参数columnIndex代表列号 ResultSetMetaDatagetMetaData 获取结果集的列编号 类型和属性下面是ResultSet接口的示例 17 privateStatementstmt null privateResultSetrs null privatePreparedStatementprpSql null Class forName com mysql jdbc Driver Connectionconn DriverManager getConnection jdbc mysql localhost 端口号 数据库名称 用户名 密码 stmt conn createStatement rs stmt executeUpdate select fromdatabase while rs next rs getString 1 rs close stmt close conn close 18 7 2JDBC应用程序接口简介 7 2 5数据库元数据 DatabaseMetaData和ResultSetMetaDataDatabaseMetaData接口可以从数据库管理系统中获得数据库的信息 例如数据库所有的表名 存储过程名等信息 这个类提供了许多方法来取得这些信息 常用的方法如下 StringgetDatabaseProductName 获得数据库的名称 ResultSetgetCooumns Stringdatabasename Stringdboname Stringtablename Stringcolumnname 获得表字段信息 以列的方式存储在一个ResultSet对象中 19 7 2JDBC应用程序接口简介 7 2 5数据库元数据 DatabaseMetaData和ResultSetMetaDataResultSetMetaData接口用来获取数据库表的结构 通过它提供的一些常用方法 可以获得ResultSet对象中的类型和属性信息的对象 常用方法如下 intgetColumnType intcolumn 检索指定列的SQL类型 StringgetTableName intcolumn 获取指定列的名称 20 7 3利用JDBC访问数据库 所有的利用JDBC访问数据库的程序都具有以下的流程 加载JDBC驱动程序建立和数据库的连接执行SQL语句存放处理结果与数据库断开连接 21 7 3利用JDBC访问数据库 7 3 1通过JDBC ODBC桥连接来访问数据库可以使JDBC有能力访问几乎所有类型的数据库 下面通过一个例子介绍 1 首先建立一个access数据库 数据库名称为 book 保存数据库文件 22 7 3利用JDBC访问数据库 7 3 1通过JDBC ODBC桥连接来访问数据库2 配置数据源首先要配置ODBC数据源 选择数据源 ODBC Win2000在管理工具中 WinXP在控制面板中 先看图片 在现场演示 23 在管理工具中 选择 数据源 在对话框中选择用户dsn 添加 24 在对话框中选择accessdriver Mdb 单击 完成 在数据源名称输入 book 选择数据库为book 25 选择图书管理数据库 mdb 权限默认 在登录用户名输入对应的用户名和密码 26 7 3利用JDBC访问数据库 7 3 1通过JDBC ODBC桥连接来访问数据库3编写相应的程序 1 加载数据库的驱动程序 2 建立连接 3 向数据库发送SQL语句 4 处理查询结果 5 关闭数据库连接 27 7 3利用JDBC访问数据库 7 3 1通过JDBC ODBC桥连接来访问数据库 例7 1 利用JDBC ODBC桥连接数据库 执行SQL语句 并在数据库中插入一条记录 28 ch7 1 jsp文件内容如下 Connectionconn Statementstmt null ResultSetrs intn try Class forName sun jdbc odbc JdbcOdbcDriver catch ClassNotFoundExceptione out print e 29 try 和数据库建立连接conn DriverManager getConnection jdbc odbc book stmt conn createStatement 创建Statement对象 用于执行SQL语句n stmt executeUpdate insertintobookvalues TP003 ASP NET动态网站开发教程 李英俊 清华大学出版社 35 向表中插入一条记录if n 0 out println 添加成功 elseout println 添加失败 rs stmt executeQuery select frombook 30 out print out print out print 书号 out print 书名 out print 作者 out print 出版社 out print 单价 out print 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 getFloat price out print out print stmt close 关闭数据库conn close 32 catch Exceptione out println e toString 33 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库1 安装mysql数据库从网上下载mysql 5 0 22 win32 zip 将mysql安装到了E mysql目录中 2 启动mysqlcde mysql binmysqld nt 34 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库 35 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库3 启动mysql监视器用户再启动一个MS DOS窗口 切换到E MYSQL BIN目录中 执行如下命令 e cdmysqlcdbinmysql uroot 36 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库 37 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库4 创建数据库启动mysql监视器后 可以在提示符下输入sql语句来创建数据库和表 sql语句结束必须使用 符号 在编辑sql语句的过程中可以使用 c终止当前sql语句的编辑 在mysql监视器提示符下 输入创建图书管理数据库booklib的SQL语句并执行 38 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库 39 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库5 创建数据库中的表在booklib数据库中创建book表的SQL语句为 CREATETABLEbook bidchar 20 NOTNULL namechar 20 defaultNULL authorchar 10 defaultNULL publishvarchar 50 defaultNULL pricefloatdefaultNULL PRIMARYKEY bid ENGINE InnoDBDEFAULTCHARSET utf8 40 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库5 创建数据库中的表 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 Exceptione out println e toString 42 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库 例7 2 利用纯Java驱动程序连接mysql数据库 查询book表中的所有记录 43 44 45 46 连接不同的数据库 除Class forName 中的驱动程序类及url的书写方式不同之外 其他所有部分均相同 47 7 3利用JDBC访问数据库 7 3 3配置和连接不同的数据库1 连接Oracle数据库安装完Oracle后 找到文件classes12 zip 可以在Oracle安装目录搜索得到 将该文件复制到JavaJDK的子目录 jre lib ext目录中 并其更名为classes jre或cleasses jar Class forName oracle jdbc driver OracleDriver DriverManager getConnection jdbc oracle thin host 端口号 数据库名 用户名 密码 48 7 3利用JDBC访问数据库 7 3 3配置和连接不同的数据库2 连接SqlServer数据库下载sqljdbc 1 1 1501 101 enu exe驱动安装文件 找到sqljdbc jar文件 将其复制到Tomcat所使用的JDK的 jre lib ext目录中 连接方法 Class forName com microsoft jdbc sqlserver SQLServerDriver DriverManager getConnection jdbc sqlserver 172 0 0 1 1443 DatabaseName 数据库名 用户名 密码 49 提示 如果应用程序和要连接的SqlServer2000服务器在不同的计算机上 可以使用SqlServer2000服务器的ip地址 例如192 168 1 1 如果应用程序无法和SqlServer2000连接 可能需要更新SqlServer2000服务器 用户可以从微软网站下载补丁sqlsp4 rar 安装该补丁即可 7 3利用JDBC访问数据库 50 7 4数据库操作案例 7 4 1查询数据1 顺序查询数据ResultSetrs stmt executeQuery selectbid name author publish pricefrombook 对于结果集rs的列数为5列 第一列对用bid 第二列对应name 第三列对应author 第四列对应publish 第五列对应price 而每一次rs只能看到一行 要在看到下一行 必须使用next 方法移动当前行 ResultSet对象使用getXXX 方法获得当前行字段的值 下面是一个实例 51 52 QueryBean java代码 53 ch7 3 jsp文件内容 54 7 4数据库操作案例 2 随机查询如果需要在结果集中前后移动或随机显示某一条记录 这时就必须得到一个可以滚动的结果集 得到滚动结果集的方法如下 Statementstmt conn createStatement inttype intconcurrency ResultSetrs stmt executeQuery sqlstr 其中type的取值决定结果集的滚动方式 可以取下列值 55 7 4数据库操作案例 2 随机查询ResultSet TYPE FORWORD ONLY 结果集的游标只能向下移动 ResultSet TYPE SCROLL INSENSITIVE 结果集的游标可以上下移动 当数据库的数据变化时 当前结果集不变 ResultSet TYPE SCROLL SENSITIVE 结果集的游标可以上下移动 当数据库的数据变化时 当前结果集同步变化 56 7 4数据库操作案例 2 随机查询滚动结果集ResultSet对象可以使用的方法如下 publicbooleanprevious 将游标向上移动 当移动到结果集第一行之前返回false publicvoidbeforeFirst 将游标移到结果集第一行之前 publicvoidafterLast 将游标移到结果集最后一行之后 publicvoidfirst 将游标移到结果集的第一行 publicvoidlast 将游标移到结果集的最后一行 publicbooleanisAfterLast 判断游标是否在结果集的最后一行之后 57 7 4数据库操作案例 2 随机查询滚动结果集ResultSet对象可以使用的方法如下 publicbooleanisBeforeFirst 判断游标是否在结果集第一行之前 publicbooleanisFirst 判断游标是否在结果集第一行 publicbooleanisLast 判断游标是否在结果集的最后一行 publicintgetRow 得到当前游标所在的行 行号从1开始 如果结果集没有行 则返回0 publicbooleanabsolute introw 将游标移到到row所指定的行 row取负值则倒数 如 1 则移动到最后一行 58 7 4数据库操作案例 2 随机查询 例7 4 随机查询示例 59 RandomQuerybean java 60 ch7 3 jsp文件内容 61 7 4数据库操作案例 3 条件查询在顺序查询和随机查询中得到的是表中的全部记录 如果要得到表中满足条件的记录 就要采用条件查询 条件查询是由客户端提供查询条件 即查询的参数 再由这些参数构造SQL语句 执行该语句并得到筛选结果的查询 下面的例子根据用户选择的字段和输入的关键字查询图书信息 如果没有输入关键字则显示所有图书的信息 62 7 4数据库操作案例 3 条件查询 例7 5 条件查询图书信息 63 keyQueryBean java 64 ch7 5 jsp文件内容 65 7 4数据库操作案例 7 4 2更新查询Statement对象提供了intexecuteUpdate StringsqlStatement 方法 用于实现对数据库中数据的添加 删除和更新操作 sqlStatement参数是由insert delete和update等关键字构成的Sql语句 函数返回值为查询所影响的行数 失败返回0 例如添加记录的sql语句 StringsqlStatement insertbookvalues tp1004 高数 杨 清华出版社 35 66 7 4数据库操作案例 7 4 2更新查询stmt executeUpdate sqlStatement 例如更新记录的sql语句 StringsqlStatement updatebooksetname 新值 wherebid tp1001 stmt executeUpdate sqlStatement 例如删除记录的sql语句 StringsqlStatement deletefrombookwherebid tp1001 stmt executeUpdate sqlStatement 67 7 4数据库操作案例 7 4 2更新查询1 添加记录 例7 6 向mysql数据库中的表追加记录 68 addBean java 69 ch7 6 jsp文件内容 70 7 4数据库操作案例 7 4 2更新查询2 删除记录 例7 7 删除book表中的记录 71 listBean java 72 deleteBean java 73 ch7 7 jsp文件内容 74 7 4数据库操作案例 7 4 2更新查询3 修改记录 例7 8 修改记录 页面如图效果如图所示 75 创建存储过程的sql代码如下 usebooklibdelimiter createprocedureupdate book p inp bidchar 20 inp namechar 20 inp authorchar 10 inp publishvarchar 50 inp pricefloat readssqldatabeginupdatebooksetname p name author p author publish p publish price p pricewherebid p bid end delimiter 76 7 4数据库操作案例 77 showBean java 78 三个页面代码 79 第三个页面上的Javabean代码 80 7 4数据库操作案例 7 4 3分页查询分页显示程序中可以使用CachedRowSetImpl类 CachedRowSetImpl对象可以保存ResultSet对象中的数据 它不依赖与Connection对象 并且继承了ResultSet的所有方法 CachedRowSetImpl类在com sun rowset包中 使用CachedRowSetImpl对象的代码如下 81 7 4数据库操作案例 7 4 3分页查询importcom sun rowse ResultSetrs stmt executeQuery select frombook CachedRowSetImplrowSet newCachedRowSetImpl rowSet populate rs while rowSet next rowSet getString 1 82 7 4数据库操作案例 7 4 3分页查询 例7 9 数据库记录的分页显示 83 showbypageBean java 84 ch7 3 jsp文件内容 85 7 4数据库操作案例 7 4 4使用连接池所谓数据库连接池就是为数据库连接建立一个 存储池 类似 蓄水池 1 在tomcat6 0上配置连接池用任意一种文本编辑器打开tomcat6 0安装目录下conf子目录中的server xml文件 在文档内容中的之前加入如下配置 86 7 4数据库操作案例 7 4 4使用连接池 87 7 4数据库操作案例 7 4 4使用连接池name项是JNDI的名称定义 程序通过JNDI才能找到此对象 这里取名为 jdbc dataBook auth项即连接池管理权限 这里取值为Container 声明为容器管理 此连接池为容器管理池 对应ch7服务目录 type项即对象类型 这里取值为javax sql DataSource 声明为数据库连接池 driverClassName项为数据库驱动程序 url项为数据库连接地址 username为连接用户名 password为连接用户密码 maxActive为最大连接数 maxIdle为最小连接数 88 7 4数据库操作案例 7 4 4使用连接池示例 例7 10 使用连接池操作数据库 89 ch7 10 jsp文件内容 90 7 5上机实训 实训目的理解JDBC编程接口 掌握利用JDBC访问数据库的方法 掌握对表中数据的增 删 改 查编程技术 掌握连接池的使用技术 掌握查询结果的分页显示技术 91 7 5上机实训 实训内容实训1编写一个简单的图书管理系统 要求 1 建立一个图书管理数据库booklib 库中有一个book表 2 完成一个管理系统主界面 主界面功能包括添加图书 修改图书 删除图书和查询图书等功能的链接 3 参照本章示例 完成图书管理系统各链接的功能 92 7 6本章习题 思考题 1 什么是JDBC编程接口 2 什么是数据库连接池 3 使用纯Java驱动操作mysql数据库的步骤 3 加载SqlServer2000纯Java驱动程序的代码是什么 4 使用预处理语句和存储过程有什么好处 5 使用CachedRowSetImpl类有什么好处 6 如何使用滚动的结果集 93
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!