基于web的java开发设计 ppt课件_第1页
基于web的java开发设计 ppt课件_第2页
基于web的java开发设计 ppt课件_第3页
基于web的java开发设计 ppt课件_第4页
基于web的java开发设计 ppt课件_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1 基于WEB的JAVA开发设计 JDBC数据库访问 2 主要内容 JDBC简介JDBC驱动程序类型JDBC基本编程JDBC高级编程 3 JDBC简介 JDBC JavaDatabaseConnectivity 是一组用来按照统一方式访问数据库的API 它向程序员提供了独立于数据库的统一接口 可以使开发人员不必考虑所用的特定数据库便可编写应用程序 实现了Java与数据库的互连 它能够 提供对数据库的跨平台存取无需知道数据库具体的位置无需要知道数据库实现的具体细节 4 5 JDBC驱动程序类型 6 TYPE1 TYPE1驱动程序 是JDBC ODBC桥连接方式通常运行在Windows系统上需要在客户机上安装ODBC驱动程序 7 TYPE2 TYPE2驱动程序 需要在客户机上安装所用数据对应的本地驱动 这些驱动通常是C或C 语言所编写的 该驱动将JDBC对数据库的调用转换成数据库本地的API调用 8 TYPE3 9 TYPE3 网络服务可以采用多种技术来提高系统性能 这些服务包括 负载均衡缓存技术连接池技术容错机制 10 TYPE4 TYPE4是一种纯Java的驱动实现 他不需要任何客户端配置 这也是最为常见的数据库连接方式 11 12 DriverManager DriverManager类DriverManager 驱动程序管理器 类负责管理JDBC驱动程序 在使用JDBC驱动程序之前 必须先将驱动程序加载并向DriverManager注册后才可使用 在程序中可以通过调用Class forName 方法来完成 常用方法如下 PublicstaticsynchronizedConnectiongetConnection Stringurl Stringuser Stringpassword throwsSQLException获得url对应数据库的一个连接PublicstaticvoidsetLoginTimeout intseconds 设置要进行数据库登录时驱动程序等待的延迟时间 13 Connection Connection接口Connection对象是通过DriverManager getConnection 方法获得 代表与数据库的连接 也就是在已经加载的驱动程序和数据库之间建立连接 Connection接口是JSP编程中使用最频繁的接口之一 常用方法如下 StatementcreateStatement throwsSQLException创建一个Statement对象PrepareStatementprepareStatement Stringsql throwsSQLException创建一个Preparestatement对象 并能把SQL语句提交到数据库进行预编译voidsetAutoCommit Booleanautocommit throwsSQLException设置事务提交的模式voidcommit throwsSQLException提交对数据库的更改 使更改生效voidrollback throwsSQLException放弃当前事务开始以来对数据库所作的修改 14 Statement Statement接口Statement用来执行静态SQL语句 例如 执行insert update delete语句 可以调用executeUpdate Stringsql 方法 执行select语句可以调用executeQuery Stringsql 方法 该方法返回ResultSet对象 常用方法如下 ResultSetexecuteQuery Stringsql throwsSQLException执行一个查询语句并返回结果集intexecuteUpdate Stringsql throwsSQLException执行更新操作 返回更新的行数Booleanexecute Stringsql throwsSQLException执行更新或查询语句 返回是否有结果集 15 PreparedStatement PreparedStatement接口PreparedStatement接口继承Statement接口 作为提高性能的一条措施 PreparedStatement提供了可以与查询信息一起预编译的一种语句类型 16 CallableStatement CallableStatement是JDBC用来调用数据库中存储过程的机制具体的使用和PreparedStatement相似需要注意的是 要调用的存储过程必须在数据库中存在 否则将抛出异常 17 ResultSet ResultSet接口在Statement执行SQL查询语句时 会返回ResultSet查询结果记录集 ResultSet接口提供了逐行访问这些记录的方法 常用方法如下 Booleannext throwsSQLException把当前指针定位到下一行 注意 最初 ResultSet的指针位于第一行之前 voidclose throwsSQLException释放ResultSet对象资源ResultSet提供了getXXX 方法 用于获取当前行中某列的值 其中 XXX 与列的数据类型有关 例如 如要获取的列是String类型 则使用getString 方法获取该列的值 getXXX 方法如下所示 getString getInt getFloat getDouble getDate getBoolean 18 19 importjava sql Try Class forName oracle jdbc driver OracleDriver StringoraURL jdbc oracle thin host port dbName Connectioncon DriverManager getConnection oraURL username password Statementstatement connection createStatement Stringquery SELECTname pwdFROMsometable ResultSetresultSet statement executeQuery query while resultSet next name resultSet getString 1 phone resultSet getString 2 System out println name phone resultSet close statement close con close catch SQLExceptione 第一步 第二步 第三步 第四步 第五步 第六步 第七步 20 连接数据库的典型步骤 第一步 加载正确的数据库驱动程序为什么要加载如何加载Class forName oracle jdbc driver OracleDriver DriverManager registerDriver neworacle jdbc driver OracleDriver 经过以上其中之一语句的声明后 驱动程序就会自动地加载 注意 如果classpath路径中没有找到所需的驱动程序则会抛出ClassNotFoundException异常 21 第二步 定义所要连接数据库的地址StringODBCURL jdbc odbc dbName StringoracleURL jdbc oracle thin host port dbName StringmysqlURL jdbc mysql host port dbName StringsqlURL jdbc microsoft sqlserver host 1433 DatabaseName dbName 通过此步骤 定义要连接的数据库资源不同数据库连接的地址不同 这点需要特别注意 对弈一些常见的数据库连接地址 要求大家能够掌握 URL由3部分组成 各个部分用冒号间隔 格式如下 jdbc JDBCURL的3部分可分解如下 jdbc JDBC中的协议就是jdbc 数据库驱动程序名或数据库连接机制的名称 子协议的典型示例为oracle 它用于连接oracle数据库 一种标记数据库的方法 子名称根据子协议的不同而不同 使用子名称的目的是为定位数据库例如jdbc oracle thin ip port sid 22 第三步 建立与数据库的连接Stringusername jay debesee Stringpassword secret Connectionconnection DriverManager getConnection oracleURL username password 通过此步获得与数据库服务器的连接另外 数据库连接还可以使用连接属性信息 如下 Propertiesdbprops newProperties dbprops put user sa dbprops put password dbprops put server DEMO dbprops put db myDB try Class forName weblogic jdbc mssqlserver4 Driver Connectionconn DriverManager getConnection jdbc weblogic mssqlserver4 dbprops catch Exceptione 23 第四步 创建语句对象Statementstatement connection createStatement 第五步 声明SQL语句 并将该语句通过Statement对象提交给服务器进行执行 Stringsql SELECT FROMONTACT TABLE ResultSetresultSet statement executeQuery sql 该语句将sql命令提交给数据库服务器进行执行 并将执行结果存储在ResultSet对象中进行执行 24 Statement接口主要有如下三个方法 1 ResultSetexecuteQuery Stringsql 用于执行查询语句 返回ResultSet结果集 一个二维表 2 intexecuteUpdate Stringsql 用于执行添加 删除或修改操作 返回被更新记录的条数3 booleanexecute Stringsql 执行参数部分的SQL语句 当SQL语句的执行结果是一个ResultSet结果集时 本方法返回true 并可以通过Statement getResultSet 方法得到返回的结果集当SQL语句执行后没有返回的结果集时 该方法返回false 25 第六步 对查询结果进行分析while resultSet next name resultSet getString 1 phone resultSet getString 2 System out println name phone 针对不同的类型调用不同的getXxx方法 getString col getDate col 通过指定列名或相对顺序的方式调用getXxx 方法对应列的内容获取出来 getString String 对结果集中的内容进行修改 updateString col val 可以通过 first last previous next absolute int 方法浏览可滚动结果集中的内容支持多个结果集 26 Java数据类型和SQL数据类型之间的映射关系 27 第七步 关闭打开的资源resultSet close statement close connection close 将打开的资源关闭 注意 资源关闭的顺序和打开的顺序恰恰相反 28 JDBC ODBC桥编程实例 Access数据库 创建Access数据库student 表info 字段id 整型 username 文本 pass 文本 name 文本 age 整型 具体步骤 建立ODBC数据源使用JDBC ODBC驱动建立数据库连接插入 增加两条记录修改一条记录删除一条记录查询所有记录 29 info表结构 30 建立ODBC数据源 控制面板 管理工具 数据源 ODBC 系统DSN 添加 MicrosoftAccessDriver mdb 数据源名student 选择刚才所创建的数据库 31 程序代码 增加 32 程序代码 修改 33 程序代码 删除 34 程序代码 查询 rs close stmt close con close 35 JDBC访问Oracle数据库 打开Oracle的 企业管理器 为scott用户添加DBA权限 然后在scott中建立一个表table1 该表的结构包括三个字段 name varchar2 sex varchar2 score number 创建成功后 在该表中插入几条测试数据 分别为 aaam66bbbm73cccf91dddm85 36 部署Oracle驱动程序 在 Oracle安装目录 jdbc lib 下找到所需的驱动程序classes12 jar 并将其拷贝到当前应用的 WEB INF lib 目录下然后重新启动tomcat服务 37 一个JDBC访问Oracle数据库的例子 38 rs close stmt close con close 39 连接MySQL数据库和连接Oracle数据库的方法非常类似 只是有两个地方需要注意一下1 需要把MySQL的驱动程序mysql connector java 5 0 4 bin jar部署到 WEB INF lib 下 MySQL驱动程序可以从其官方网站上下载 连接MySQL数据库 40 2 注册驱动程序和获取连接的语句变为 Class forName com mysql jdbc Driver 或者Class forName org gjt mm mysql Driver Connectioncon DriverManager getConnection jdbc mysql ip port sid Login password 密码 用户名 数据库名 IP地址 端口号 连接MySQL数据库 41 例 MySQL数据库编程实例 42 连接SQLServer数据库同样和连接Oracle数据库相似 有两个地方需要注意一下1 需要把SQLServer的驱动程序mssqlserver jarmsbase jarmsutil jar部署到 WEB INF lib 下 SQLServer的驱动程序可以从微软的官方网站上下载 连接SQLServer数据库 43 2 注册驱动程序和获取连接的语句变为 Class forName com microsoft jdbc sqlserver SQLServerDriver Connectioncon DriverManager getConnection jdbc sqlserver ip port databasename sid Login password 密码 用户名 数据库名 IP地址 端口号 连接SQLServer数据库 44 例 SQLServer数据库编程实例 45 高级编程部分 在该部分 内容包括 事务的概念使用批处理更新使用PreparedStatement对象使用CallableStatement对象处理可滚动的结果集处理多个结果集处理元数据处理BLOB和CLOB使用事务隔离 46 事务 事务可以将一组SQL语句组成原子操作以保证数据的完整性默认情况下 JDBC使用auto commit事务模型一个使用commit和rollabck的示例 Connectioncon null try Class forName COM cloudscape core JDBCDriver con DriverManager getConnection jdbc cloudscape c PhoneBook con setAutoCommit false Statementstatement connection createStatement statement executeUpdate UPDATE mit catch Exceptione if null con con rollback 47 批处理更新 批处理更新是同时执行多个语句的机制 要执行批处理 需要 按照正常的方式创建一个语句对象向语句对象中添加多个要执行的SQL语句执行批处理示例 Statementstmt connection createStatement stmt addBatch insertintotestvalues stmt addBatch insertintotestvalues stmt executeBatch 48 PreparedStatement PreparedStatement就是带有占位符的SQL语句数据库对他们事先进行编译 因此 客户端需要做的只是传送占位符位置所需要的数据 而普通Statement的SQL语句 只有在程序运行时才对他们进行编译因此PreparedStatement运行的速度更快 49 PreparedStatement 示例1 PreparedStatementstmt connection prepareStatement insertintotestvalues stmt setString 1 firstvalue stmt setString 2 secondvalue stmt executeUpdate stmt setString 2 newrecord withdifferentsecondvalue stmt executeUpdate 50 PreparedStatement 示例2 Connectionconnection DriverManager getConnection url user password PreparedStatementstatement connection prepareStatement UPDATEemployees SETsalary WHEREid int newSalaries getSalaries int employeeIDs getIDs for inti 0 i employeeIDs length i statement setInt 1 newSalaries i statement setInt 2 employeeIDs i statement executeUpdate 51 CallableStatement CallableStatement是JDBC用来调用数据库中存储过程的机制具体的使用和PreparedStatement相似需要注意的是 要调用的存储过程必须在数据库中存在 否则将抛出异常示例 CallableStatementstmt connection prepareCall CALLGET BOOKS stmt setString 1 firstvalue stmt setString 2 secondvalue ResultSetbooks stmt execute 52 可滚动的结果集 可滚动结果集是允许你在结果集中的不同行之间进行任意浏览的ResultSet对象 具体的操纵方式包括 使用next 和previous 分别向后和向前跳一行使用first 或last 方法直接跳到结果集中的第一行或最后一行 使用absolute int 方法直接跳到结果集中指定的行使用relative int 方法向前或向后跳转指定的行数 53 可滚动的结果集 此外 你还可以使用其他方法 beforeFirst afterLast 将游标置于第一行之前或最后一行之后 isFirst isLast isBeforeFirst isAfterLast 告诉你游标是否指向指定的位置 而beforeFirst andafterLast 方法告诉你是否还有更多的数据需要处理 54 示例 Statementstmt connection createStatement ResultSet TYPE SCROLL SENSITIVE ResultSet CONCUR READ ONLY ResultSetbooks stmt executeQuery SELECT FROMBooks if books last thisscrollsfromtheendbackwardsdo dosomethingwiththisrow while books previous 55 为了使创建的结果集具有可滚动性 在创建Statement对象时需要使用指定的构建函数 该构建函数需要指定两个参数 支持滚动ResultSet TYPE FORWARD ONLY 不支持滚动 ResultSet TYPE SCROLL SENSITIVE 支持滚动 当更新时 及时更新结果集中的内容 ResultSet TYPE SCROLL INSENSITIVE 支持滚动 但当数据更新时 并不在本结果集中体现 支持并发ResultSet CONCUR READ ONLY 禁用更新 ResultSet CONCUR UPDATABLE 允许更新 56 多个结果集 批处理和CallableStatement可能返回多个结果集你可以使用getResultSet 和getMoreResults 来对结果进行检索示例 stmt addBatch stmt executeBatch do isAnUpdate false if stmt getUpdateCount 1 isAnUpdate true theoperationwasanupdate skipelse ResultSetrs stmt getResultSet dosomethingwithresults while stmt getMoreResults isAnUpdate loopifmoreresultsorlastoperationwasanupdate 57 处理元数据 元数据可以提供一些关于数据库结果的一些信息 数据库本身的信息DatabaseMetaDatadbmd connection getMetaData 单表的信息ResultSettableRS connection getMetaData getTables null null TableName null 结果集的信息ResultSetMetaDatarsmd resultSet getMetaData 58 使用MetaData的例子 Connectionconnection null Class forName COM cloudscape core JDBCDriver connection DriverManager getConnection jdbc cloudscape c PhoneBook DatabaseMetaDatadbmd connection getMetaData Stringversion dbmd getDriverVersion System out println Thedriverversionis version ResultSetaTable dbmd getTabl

温馨提示

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

评论

0/150

提交评论