华南理工大学java语言程序设计进阶篇课件.ppt_第1页
华南理工大学java语言程序设计进阶篇课件.ppt_第2页
华南理工大学java语言程序设计进阶篇课件.ppt_第3页
华南理工大学java语言程序设计进阶篇课件.ppt_第4页
华南理工大学java语言程序设计进阶篇课件.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1,第25章Java数据库程序设计,2,学习目标,理解数据库和数据库管理系统的概念(25.2节).理解关系数据模型:关系数据结构、约束和语言(25.2节).使用SQL创建和删除表,并检索和修改数据(25.3节).熟悉JDBC应用程序接口(25.4节).学会使用JDBC安装驱动器、连接数据库、执行语句和处理结果集(25.4节).使用预备语句执行预编译的SQL语句(25.5节).利用Connection接口处理事务(25.6节).使用DatabaseMetaData和ResultSetMetaData接口检索数据库元数据(25.7节Optional).用批模式执行SQL语句(25.8节,Optional).处理可滚动和可更新的结果集(25.9节,Optional).用JDBC存储和检索图像(25.10节,Optional).,3,关系数据库系统,e.g.,Access,MySQL,Oracle,andMSSQLServer,4,数据库应用系统,5,关系数据库和关系数据模型,现在,大多数数据库系统是以关系数据模型为基础的关系数据库系统。关系数据模型有三个要素:结构、完整性和语言,Structure定义了数据的表示Integrity提供对数据的约束Language提供了访问和操纵数据的手段,6,关系结构,关系数据库由一个关系集组成。一个关系有两部分:语义和该语义的一个实例.语义定义一个关系,而实例是该关系在给定事件的内容。一个关系的实例实际上是一个没有重复行的表格。我们通常称一个关系为关系或表格。,7,课程Course表,8,表格和文件,注:一个表格或关系与一个文件不同。大多数关系数据库系统在一个文件中存储多个表,9,一个简单SQL语句实例,创建表删除表描述表选择插入删除更新,createtableStudent(ssnchar(9),firstNamevarchar(25),michar(1),lastNamevarchar(25),birthDatedate,streetvarchar(25),phonechar(11),zipCodechar(5),deptIdchar(4),primarykey(ssn);,10,创建表删除表描述表选择插入删除更新,droptableEnrollment;droptableCourse;droptableStudent;,11,创建表删除表描述表选择插入删除更新,describeCourse;-Oracle,12,创建表删除表描述表选择插入删除更新,selectfirstName,mi,lastNamefromStudentwheredeptId=CS;selectfirstName,mi,lastNamefromStudentwheredeptId=CSandzipCode=31411;select*fromStudentwheredeptId=CSandzipCode=31411;,13,创建表删除表描述表选择插入删除更新,insertintoCourse(courseId,subjectId,courseNumber,title)values(11113,CSCI,3720,DatabaseSystems,3);,14,创建表删除表描述表选择插入删除更新,deleteCoursewheretitle=DatabaseSystem;,15,创建表删除表描述表选择插入删除更新,updateCoursesetnumOfCredits=4wheretitle=DatabaseSystems;,16,MySQL,netstartmysql/netstopmysqlmysqlurootpsashowdatabases;use*;showtables;Cgb2312select*fromaccount;,17,JDBC结构,18,JDBC接口,装载驱动器建立连接创建和执行语句处理结果集,19,装载驱动器的语句:Class.forName(JDBCDriverClass);驱动器是一个类,例如:数据库驱动器类SourceAccesssun.jdbc.odbc.JdbcOdbcDriver包含在JDK中MySQLcom.mysql.jdbc.Driver本书的配套网站Oracleoracle.jdbc.driver.OracleDriver本书的配套网站Access的JDBC-ODBC驱动器捆绑在JDK中MySQLJDBC驱动器包含在mysqljdbc.jar中OracleJDBC驱动器包含在classes12.jar中使用MySQL和OracleJDBC驱动器必须加载mysqljdbc.jar和classes12.jar到classpath中,在Windows中使用如下的DOS命令:classpath=%classpath%;c:bookmysqljdbc.jar;c:bookclasses12.jar,装载驱动器建立连接创建和执行语句处理结果集,20,装载驱动器建立连接创建和执行语句处理结果集,Connectionconnection=DriverManager.getConnection(databaseURL);DatabaseURLPatternAccessjdbc:odbc:dataSourceMySQLjdbc:mysql:/hostname/dbnameOraclejdbc:oracle:thin:hostname:port#:oracleDBSIDExamples:ForAccess:Connectionconnection=DriverManager.getConnection(jdbc:odbc:ExampleMDBDataSource);ForMySQL:Connectionconnection=DriverManager.getConnection(jdbc:mysql:/localhost/test);ForOracle:Connectionconnection=DriverManager.getConnection(jdbc:oracle:thin::1521:orcl,scott,tiger);,21,装载驱动器建立连接创建和执行语句处理结果集,创建语句:Statementstatement=connection.createStatement();执行语句(forupdate,delete,insert):statement.executeUpdate(createtableTemp(col1char(5),col2char(5);执行语句(forselect):/SelectthecolumnsfromtheStudenttableResultSetresultSet=statement.executeQuery(selectfirstName,mi,lastNamefromStudentwherelastName+=Smith);,22,装载驱动器建立连接创建和执行语句处理结果集,执行语句(forselect):/SelectthecolumnsfromtheStudenttableResultSetresultSet=stmt.executeQuery(selectfirstName,mi,lastNamefromStudentwherelastName+=Smith);处理结果集(forselect):/Iteratethroughtheresultandprintthestudentnameswhile(resultSet.next()System.out.println(resultSet.getString(1)+resultSet.getString(2)+.+resultSet.getString(3);,23,importjava.sql.*;publicclassSimpleJdbcpublicstaticvoidmain(Stringargs)throwsSQLException,ClassNotFoundException/LoadtheJDBCdriverClass.forName(com.mysql.jdbc.Driver);System.out.println(Driverloaded);/EstablishaconnectionConnectionconnection=DriverManager.getConnection(jdbc:mysql:/localhost/test);System.out.println(Databaseconnected);/CreateastatementStatementstatement=connection.createStatement();/ExecuteastatementResultSetresultSet=statement.executeQuery(selectfirstName,mi,lastNamefromStudentwherelastName+=Smith);/Iteratethroughtheresultandprintthestudentnameswhile(resultSet.next()System.out.println(resultSet.getString(1)+t+resultSet.getString(2)+t+resultSet.getString(3);/Closetheconnectionconnection.close();,24,处理语句,一旦建立了一个到具体数据库的连接,就可以用这个连接把程序的SQL语句发送到数据库。JDBC提供多种接口来发送语句给数据库Statement,PreparedStatement,CallableStatement,25,处理语句流程图,26,execute,executeQuery和executeUpdate方法,执行SQL语句的方法是execute,executeQuery,和executeUpdate,每个方法接受一个SQL语句的字符串作为参数。该串传送到数据库上执行。如果执行产生多个结果集、多个更新数或结果集和更新数的组合,应使用execute方法。,27,如果执行生成单个结果集如一个SQL选择语句,应使用executeQuery。如果是单一更新数或没有更新数的语句结果,如SQLINSERT,DELETE,UPDATE或DDL语句,使用executeUpdate方法。,28,准备语句接口PreparedStatement,PreparedStatement接口被用来执行动态SQL语句和带IN参数的SQL存储过程。这些SQL语句和存储过程是预编译的,重复执行时效率高。Statementpstmt=connection.prepareStatement(insertintoStudent(firstName,mi,lastName)+values(?,?,?);pstmt.setString(1,“29”);,29,检索元数据,数据库元数据时标识数据自身的信息。JDBC提供了DatabaseMetaData接口,可以获取数据库范围的信息;还提供了ResultSetMetaData接口,用于获取具体ResultSet的信息。超过100个方法,可分为三组:检索一般信息,查询数据库能力,获取对象描述。,30,检索元数据,一般信息包括URL,用户名,产品名称,版本号,驱动器名称,驱动器版本号,可用功能和,可用数据类型等。数据库能力的一个例子是,数据库是否支持GROUPBY运算符,带加列选项的ALTERTABLE命令,是否支持entry-level或全部ANSI92SQL语法。获取对象描述,如数据库对象:表、视图和过程,31,批量更新,为了提高效率,JDBC2引入批更新方式,用于处理非SELECT的SQL命令。批更新由一个非SELECT的SQL命令序列组成。这些命令收集成一批,然后一起提交到数据库。Statementstatement=conn.createStatement();/AddSQLcommandstothebatchstatement.addBatch(cr

温馨提示

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

评论

0/150

提交评论