《JSP操作数据库》PPT课件.ppt_第1页
《JSP操作数据库》PPT课件.ppt_第2页
《JSP操作数据库》PPT课件.ppt_第3页
《JSP操作数据库》PPT课件.ppt_第4页
《JSP操作数据库》PPT课件.ppt_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

互联网软件开发系列课程之 主讲教师 周峰 Java程序设计 第11章JSP操作数据库 理解JDBC应用程序编程接口 掌握使用纯Java驱动程序操作数据库的编程方法 掌握对数据的增加 删除 修改和查询编程技术 查询记录的分页面显示 数据库连接池编程技术 学习目的与主要要求 11 1JDBC概述11 2JDBC应用程序接口简介11 3利用JDBC访问数据库11 4数据库操作案例 本章内容 11 1 1什么是JDBCJDBC是Java数据库连接 JavaDataBaseConnectivity 技术的简称 指Java同许多数据库之间连接的一种标准 JDBC为数据库应用开发人员 数据库前台工具开发人员提供了一种标准的JavaAPI 使开发人员可以用纯Java语言编写完整的数据库应用程序 简单地说 JDBC能够完成下列四件事 与一个数据库建立连接 connection 向数据库发送SQL语句 statement 处理数据库返回的结果 resultset 关闭连接 close 11 1JDBC概述 11 1 2JDBC的构成1 JDBCAPI 定义了标准接口 无论编写Mysql还是Oracle等数据库程序 这些接口是一致的 2 JDBC数据库驱动程序 11 1JDBC概述 11 2 1DrvierManager类提供管理一组JDBC驱动程序所需要的基本服务 可以跟踪可用的驱动程序 并在数据库和相应的驱动程序之间建立连接 该类的常用方法有 getConnection和forName方法 publicstaticConnectiongetConnection Stringurl Stringuser Stringpassword publicstaticClassforName StringclassName 11 2JDBC应用程序接口简介 DrvierManager类的使用法 1 加载驱动例如 Class forName com mysql jdbc Driver 2 与数据库建立连接DriverManager getConnection Stringurl Stringuser Stringpassword 11 2JDBC应用程序接口简介 对getConnection函数中的参数解释 url参数的命名方法 url由3部分组成 各部分间用冒号分隔 如下所示 jdbc 其中 jdbc 协议名称 在JDBCURL中的协议总是jdbc 驱动程序名或数据库连接机制的名称 如 odbc 它是用于指定ODBC风格的数据库资源名称的URL而保留的 一种标识数据库的方法 子名称可以依不同的子协议而变化 它还可以有子名称的子名称 含有驱动程序编程人员所选的任何内部语法 使用子名称的目的是为定位数据库提供足够的信息 11 2JDBC应用程序接口简介 常用数据库驱动及URL 驱动 com microsoft sqlserver jdbc SQLServerDrivercom mysql jdbc Driversun jdbc odbc JdbcOdbcDriveroracle jdbc driver OracleDriverURL jdbc sqlserver localhost 1433 DatabaseName regjdbc mysql localhost 3306 testjdbc odbc mydatajdbc oracle thin 127 0 0 1 1521 SampleDB 11 2 2Connection接口Connection接口是java sql包中最重要的接口 Connection对象代表与数据库的连接 一个应用程序可与单个数据库有一个或多个连接 或者可与许多数据库有连接 数据库连接一旦建立 就可用来向它所涉及的数据库发送SQL语句 Connection的作用是创建向数据库发送SQL语句的三个接口 这三个接口分别是 Statement接口PreparedStatement接口CallableStatement接口 11 2JDBC应用程序接口简介 11 2 2Connection接口Connection接口提供了多个同名但是参数不同的方法创建以上的三个接口 例如 publicStatementcreateStatement publicStatementcreateStatement intresultSetType intresultSetConcurrency 其中 参数resultSetType指返回记录集的类型resultSetConcurrency指发送的SQL语句的权限 11 2JDBC应用程序接口简介 11 2 2Connection接口常用的一些方法 booleanisClosed 用于判断Connection对象是否已经被关闭 voidcommit 用于提交SQL语句 确认从上一次提交以来所进行的修改 voidclose 断开连接 释放资源 voidrollback 取消SQL语句 取消当前事务中进行的修改 DatabaseMetaDatagetMetaData 获取一个DatabaseMetaData对象 11 2JDBC应用程序接口简介 11 2 3Statement接口Statement接口对象创建完毕后 主要使用以下方法 publicResultSetexecuteQuery Stringsql 用于执行产生单个结果集的语句 如select publicintexecuteUpdate Stringsql 用于执行insert update或delete语句以及SQLDLL 数据定义 语句 当执行insert update或delete语句时将返回一个整数 用于表示受影响的行数 返回结果为0时表示操作失败 当执行SQLDLL语句 如createtable时 由于它不操作行 返回值将总为0 11 2JDBC应用程序接口简介 11 2 3Statement接口publicbooleanexecute Stringsql 用于执行返回多个结果集 多个更新计数或二者结合的SQL语句 publicint executeBatch 用于执行几个SQL语句 Statement接口使用addBatch Stringsql 方法将几个SQL语句添加到一个语句块中 然后一同提交给数据库服务器 同时执行 当执行多个SQLinsert语句时效率将很高 因为一次提交比多次提交要节省很多系统资源 voidclose 释放Satement对象的数据库和JDBC资源 11 2JDBC应用程序接口简介 11 2 3Statement接口PreparedStatement接口对象主要使用以下方法 publicResultSetexecuteQuery Stringsql 使用Select命名对数据库进行查询 publicintexecuteUpdate Stringsql 用于执行insert update或delete语句对数据库进行新增 删除和修改操作 voidsetXXX intparameterIndex XXXx 设定XXX数据类型值给PreparedStatement类对象的IN参数 11 2JDBC应用程序接口简介 11 2 3Statement接口CallableStatement接口主要用于执行存储过程 其主要方法同Statement 存储过程有两种参数 IN参数和OUT参数 CallableStatement接口继承了PerpareedStatement接口的setXXX方法对IN参数赋值 在CallableStatement接口中使用OUT参数 要做两件事情 一是对OUT参数进行类型注册 二是获取OUT参数的值 CallableStatement提供了多种方法进行类型注册 下面是常用的两种 registerOutParameter StringparameterStringName intsqlType registerOutParameter StringparameterStringName intsqlType intscale 11 2JDBC应用程序接口简介 11 2 4数据结果集 ResultSet接口ResultSet接口用于获取执行SQL语句 或数据库存储过程 返回的结果 它的实例对象是符合SQL语句条件的所有行 常用的方法有 publicbooleannext 用于数据库游标移动到结果集的下一行 使之成为当前行 如果当前行为最后一行 返回值为false 否则 返回true 在定位到结果集中的某行后 就可以读取数据 对于不同数据类型 要使用不同的读取方法getXXX JDBC提供了两种形式 11 2JDBC应用程序接口简介 11 2 4数据结果集 ResultSet接口publicXXXgetXXX StringcolumnName XXX代表任意的数据类型 参数columnName代表列名 publicXXXgetXXX intcolumnIndex XXX代表任意的数据类型 参数columnIndex代表列号 ResultSetMetaDatagetMetaData 获取结果集的列编号 类型和属性下面是ResultSet接口的示例 11 2JDBC应用程序接口简介 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 11 2JDBC应用程序接口简介 11 2 5数据库元数据 DatabaseMetaData和ResultSetMetaDataDatabaseMetaData接口可以从数据库管理系统中获得数据库的信息 例如数据库所有的表名 存储过程名等信息 这个类提供了许多方法来取得这些信息 常用的方法如下 ResultSetgetCooumns Stringdatabasename Stringdboname Stringtablename Stringcolumnname 获得表字段信息 以列的方式存储在一个ResultSet对象中 11 2JDBC应用程序接口简介 11 2 5数据库元数据 DatabaseMetaData和ResultSetMetaDataResultSetMetaData接口用来获取数据库表的结构 通过它提供的一些常用方法 可以获得ResultSet对象中的类型和属性信息的对象 常用方法如下 intgetColumnType intcolumn 检索指定列的SQL类型 StringgetTableName intcolumn 获取指定列的名称 ResultSet对象的getMetaData 方法Connnection对象的getMetaData方法 11 2JDBC应用程序接口简介 所有的利用JDBC访问数据库的程序都具有以下的流程 加载JDBC驱动程序建立和数据库的连接执行SQL语句存放处理结果与数据库断开连接 11 3利用JDBC访问数据库 11 3 1通过JDBC ODBC桥连接来访问数据库可以使JDBC有能力访问几乎所有类型的数据库 下面通过一个例子介绍 1 首先建立一个access数据库 数据库名称为 book 保存数据库文件 11 3利用JDBC访问数据库 11 3 1通过JDBC ODBC桥连接来访问数据库2 配置数据源首先要配置ODBC数据源 选择数据源 ODBC Win2000在管理工具中 WinXP在控制面板中 先看图片 在现场演示 11 3利用JDBC访问数据库 在管理工具中 选择 数据源 在对话框中选择用户dsn 添加 11 3利用JDBC访问数据库 在对话框中选择accessdriver Mdb 单击 完成 在数据源名称输入 book 选择数据库为book 11 3利用JDBC访问数据库 选择图书管理数据库 mdb 权限默认 在登录用户名输入对应的用户名和密码 11 3利用JDBC访问数据库 11 3 1通过JDBC ODBC桥连接来访问数据库3编写相应的程序 1 加载数据库的驱动程序 2 建立连接 3 向数据库发送SQL语句 4 处理查询结果 5 关闭数据库连接 11 3利用JDBC访问数据库 11 3 1通过JDBC ODBC桥连接来访问数据库 例11 1 利用JDBC ODBC桥连接数据库 执行SQL语句 并在数据库中插入一条记录 11 3利用JDBC访问数据库 ch11 1 jsp文件内容如下 Connectionconn Statementstmt null ResultSetrs intn try Class forName sun jdbc odbc JdbcOdbcDriver catch ClassNotFoundExceptione out print e 11 3利用JDBC访问数据库 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 11 3利用JDBC访问数据库 out print out print out print 书号 out print 书名 out print 作者 out print 出版社 out print 单价 out print 11 3利用JDBC访问数据库 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 11 3利用JDBC访问数据库 catch Exceptione out println e toString 11 3利用JDBC访问数据库 11 3 2利用本地协议纯Java驱动程序连接数据库1 安装mysql数据库从网上下载mysql 5 0 22 win32 zip 将mysql安装到D 盘目录中 2 启动mysqlcdD 路径 binmysqld nt 11 3利用JDBC访问数据库 11 3 2利用本地协议纯Java驱动程序连接数据库 11 3利用JDBC访问数据库 11 3 2利用本地协议纯Java驱动程序连接数据库3 启动mysql监视器用户再启动一个MS DOS窗口 切换到D MYSQL BIN目录中 执行如下命令 D cdmysqlcdbinmysql uroot 11 3利用JDBC访问数据库 11 3 2利用本地协议纯Java驱动程序连接数据库 11 3利用JDBC访问数据库 11 3 2利用本地协议纯Java驱动程序连接数据库4 创建数据库启动mysql监视器后 可以在提示符下输入sql语句来创建数据库和表 sql语句结束必须使用 符号 在编辑sql语句的过程中可以使用 c终止当前sql语句的编辑 在mysql监视器提示符下 输入创建图书管理数据库booklib的SQL语句并执行 11 3利用JDBC访问数据库 11 3 2利用本地协议纯Java驱动程序连接数据库 11 3利用JDBC访问数据库 11 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 11 3利用JDBC访问数据库 7 3利用JDBC访问数据库 7 3 2利用本地协议纯Java驱动程序连接数据库5 创建数据库中的表 11 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 11 3利用JDBC访问数据库 11 3 2利用本地协议纯Java驱动程序连接数据库 例11 2 利用纯Java驱动程序连接mysql数据库 查询book表中的所有记录 11 3利用JDBC访问数据库 11 3利用JDBC访问数据库 11 3利用JDBC访问数据库 11 3利用JDBC访问数据库 连接不同的数据库 除Class forName 中的驱动程序类及url的书写方式不同之外 其他所有部分均相同 11 3利用JDBC访问数据库 11 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 端口号 数据库名 用户名 密码 11 3利用JDBC访问数据库 11 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 数据库名 用户名 密码 11 3利用JDBC访问数据库 提示 如果应用程序和要连接的SqlServer2005服务器在不同的计算机上 可以使用SqlServer2005服务器的ip地址 例如192 168 1 1 如果应用程序无法和SqlServer2005连接 可能需要更新SqlServer2005服务器 用户可以从微软网站下载补丁sqlsp4 rar 安装该补丁即可 11 3利用JDBC访问数据库 11 4 1查询数据1 顺序查询数据ResultSetrs stmt executeQuery selectbid name author publish pricefrombook 对于结果集rs的列数为5列 第一列对用bid 第二列对应name 第三列对应author 第四列对应publish 第五列对应price 而每一次rs只能看到一行 要在看到下一行 必须使用next 方法移动当前行 ResultSet对象使用getXXX 方法获得当前行字段的值 下面是一个实例 11 4数据库操作案例 11 4数据库操作案例 QueryBean java代码 ch7 3 jsp文件内容 2 随机查询如果需要在结果集中前后移动或随机显示某一条记录 这时就必须得到一个可以滚动的结果集 得到滚动结果集的方法如下 Statementstmt conn createStatement inttype intconcurrency ResultSetrs stmt executeQuery sqlstr 其中type的取值决定结果集的滚动方式 可以取下列值 11 4数据库操作案例 2 随机查询ResultSet TYPE FORWORD ONLY 结果集的游标只能向下移动 ResultSet TYPE SCROLL INSENSITIVE 结果集的游标可以上下移动 当数据库的数据变化时 当前结果集不变 ResultSet TYPE SCROLL SENSITIVE 结果集的游标可以上下移动 当数据库的数据变化时 当前结果集同步变化 11 4数据库操作案例 2 随机查询滚动结果集ResultSet对象可以使用的方法如下 publicbooleanprevious 将游标向上移动 当移动到结果集第一行之前返回false publicvoidbeforeFirst 将游标移到结果集第一行之前 publicvoidafterLast 将游标移到结果集最后一行之后 publicvoidfirst 将游标移到结果集的第一行 publicvoidlast 将游标移到结果集的最后一行 publicbooleanisAfterLast 判断游标是否在结果集的最后一行之后 11 4数据库操作案例 2 随机查询滚动结果集ResultSet对象可以使用的方法如下 publicbooleanisBeforeFirst 判断游标是否在结果集第一行之前 publicbooleanisFirst 判断游标是否在结果集第一行 publicbooleanisLast 判断游标是否在结果集的最后一行 publicintgetRow 得到当前游标所在的行 行号从1开始 如果结果集没有行 则返回0 publicbooleanabsolute introw 将游标移到到row所指定的行 row取负值则倒数 如 1 则移动到最后一行 11 4数据库操作案例 2 随机查询 例11 4 随机查询示例 11 4数据库操作案例 RandomQuerybean java ch7 3 jsp文件内容 3 条件查询在顺序查询和随机查询中得到的是表中的全部记录 如果要得到表中满足条件的记录 就要采用条件查询 条件查询是由客户端提供查询条件 即查询的参数 再由这些参数构造SQL语句 执行该语句并得到筛选结果的查询 下面的例子根据用户选择的字段和输入的关键字查询图书信息 如果没有输入关键字则显示所有图书的信息 11 4数据库操作案例 3 条件查询 例11 5 条件查询图书信息 11 4数据库操作案例 keyQueryBean java ch7 5 jsp文件内容 11 4 2更新查询Statement对象提供了intexecuteUpdate StringsqlStatement 方法 用于实现对数据库中数据的添加 删除和更新操作 sqlStatement参数是由insert delete和update等关键字构成的Sql语句 函数返回值为查询所影响的行数 失败返回0 例如添加记录的sql语句 StringsqlStatement insertbookvalues tp1004 高数 杨 清华出版社 35 11 4数据库操作案例 11 4 2更新查询stmt executeUpdate sqlStatement 例如更新记录的sql语句 StringsqlStatement updatebooksetname 新值 wherebid tp1001 stmt executeUpdate sqlStatement 例如删除记录的sql语句 StringsqlStatement deletefrombookwherebid tp1001 stmt executeUpdate sqlStatement 11 4数据库操作案例 7 4 2更新查询1 添加记录 例11 6 向mysql数据库中的表追加记录 11 4数据库操作案例 addBean java ch7 6 jsp文件内容 11 4 2更新查询2 删除记录 例11 7 删除book表中的记录 11 4数据库操作案例 listBean java deleteBean java ch7 7 jsp文件内容 11 4 2更新查询3 修改记录 例11 8 修改记录 页面如图效果如图所示 11 4数据库操作案例 创建存储过程的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 11 4数据库操作案例 showBean java 三个页面代码 第三个页面上的Javabean代码 11 4 3分页查询分页显示程序中可以使用CachedRowSetImpl类 CachedRowSetImpl对象可以保存ResultSet对象中的数据 它不依赖与Connection对象 并且继承了ResultSet的所有方法 CachedRowSetImpl类在com sun rowset包中 使用CachedRowSetImpl对象的代码如下 11 4数据库操作案例 11 4 3分页查询importcom sun rowse ResultSetrs stmt executeQuery select frombook CachedRowSetImplrowSet newCachedRowSetImpl rowSet populate rs while rowSet next rowSet getString 1 11 4数据库操作案例 11 4 3分页查询 例11 9 数据库记录的分页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论