第十二课《Jdbc数据库操作》教学课件_第1页
第十二课《Jdbc数据库操作》教学课件_第2页
第十二课《Jdbc数据库操作》教学课件_第3页
第十二课《Jdbc数据库操作》教学课件_第4页
第十二课《Jdbc数据库操作》教学课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

目标

了解JDBC简介掌握JDBC的连接步骤掌握Connection对象的应用掌握Statement对象的应用掌握Recordset对象的应用掌握事务机制7/20/20231什么是JDBC

JDBC,全称为JavaDataBaseConnectivity它是一个面向对象的应用程序接口(API),通过它可访问各类关系数据库。JDBC也是java核心类库的一部分。JDBC的最大特点是它独立于具体的关系数据库。JDBCAPI中定义了一些Java类分别用来表示与数据库的连接(connections),SQL语句(SQLStatements)结果集(resultsets)以及其它的数据库对象,使得Java程序能方便地与数据库交互并处理所得的结果

7/20/20232JDBC简介

与ODBC相类似,JDBC接口(API)也包括两个层次:

面向应用的API:JavaAPI,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)

面向数据库的API:JavaDriverAPI,供开发商开发数据库驱动程序7/20/20233

数据库访问技术简介

客户机/服务器应用程序数据库编程ODBCJDBC两个常用的API数据库执行SQL语句检索查询结果7/20/20234

JDBCJDBC(Java数据库连接)(sun公司提供)Java应用程序编程接口Java应用程序数据库插入修改删除查询7/20/20235JDBC主要对象

JDBC是JAVA程序连接数据库的接口主要是三个对象:1Connection2Statement3ResultSet另外PreparedStatement用于执行预编译语句CallableStatement用于调用存储过程7/20/20236

JDBC驱动程序的类型JDBC驱动程序的类型JDBC-ODBC桥驱动程序及ODBC驱动程序本地API部分Java驱动程序JDBC-Net纯Java驱动程序本地协议纯Java驱动程序7/20/20237JDBCdriver的类型共有四种类型的JDBCdriver:类型1JDBC-ODBCbridgedriver

这种类型的driver能使客户端通过JDBC调用连接到一个使用ODBCdriver的数据库。使用这类driver需要每个客户端机器都装上数据库对应的ODBCdriver

类型2部分Java、部分本机驱动程序

这种驱动使用Java实现与数据库厂商专有API的混和形式来提供数据访问。它比前一种方式要快。JDBC驱动将标准的JDBC调用转变为对数据库API的本地调用,该类型的驱动程序是本地部分Java技术性能的本机API驱动程序7/20/20238JDBCdriver的类型(续)

类型3中间数据访问服务器这种方式使用一个中间数据访问服务器,通过这种服务器,它可以把Java客户端连接到多个数据库服务器上,这种方式不需要客户端的数据库驱动,而是使用网络-服务器中间层来访问一个数据库类型4纯Java驱动程序这种方式使用厂商专有的网络协议把JDBCAPI调用转换成直接的网络调用,这种方式的本质是使用套接字(Socket)进行编程。纯Java驱动运行在客户端,并且直接访问数据库,该类型的驱动程序是本地协议完全Java技术性能的驱动程序,同时它的使用也比较简单,客户端不需要安装任何中间件或者运行库7/20/20239

JDBC体系结构2-1Java程序JDBC驱动程序数据库SQL命令结果7/20/202310JDBC体系结构2-2应用层Driver

StatementResultSet

Connection

各接口驱动层7/20/202311JDBCURL

JDBCURL提供了一种标识数据库的方法,可以使相应的驱动程序能识别该数据库并与之建立连接。JDBC的作用是提供某些约定,驱动程序编程员在构造它们的JDBCURL时应该遵循这些约定JDBC

URL

应允许驱动程序编程员将一切所需的信息编入其中,而无须要求用户去做任何系统管理工作7/20/202312JDBCURL的标准语法JDBC

URL

的标准语法如下所示。它由以下几个不风组成,各部分间用冒号分隔:

jdbc:<

子协议

>:<

子名称

>:<主机名>:<端口号>:<数据库>jdbc

协议。JDBC

URL

中的协议总是

jdbc<子协议>

驱动程序名或数据库连接机制的名称<子名称>

一种标识数据库的方法以Oraclethin驱动为例:Stringurl="jdbc:oracle:thin:127.0.0.1:1521:dbname";7/20/202313JDBCURL的标准语法JDBC

URL

的标准语法如下所示。它由以下几个不风组成,各部分间用冒号分隔:

jdbc:<

子协议

>:<

子名称

>:<主机名>:<端口号>:<数据库>jdbc

协议。JDBC

URL

中的协议总是

jdbc<子协议>

驱动程序名或数据库连接机制的名称<子名称>

一种标识数据库的方法以Oraclethin驱动为例:Stringurl="jdbc:oracle:thin:127.0.0.1:1521:dbname";7/20/202314使用JDBC存取数据库

1加载JDBCdriver;2在客户程序与数据库之间建立连接;3通过数据库连接将SQL语句从Java程序传到数据库;4通过数据库返回的记录集得到所需的数据;5如需要,再用修改后的数据更新数据库;6操作结束,关闭连接7/20/202315JDBC程序访问数据库的步骤开始导入java.sql包加载并注册驱动程序创建一个Connection对象创建一个Statement对象执行语句关闭ResultSet对象关闭Statement对象关闭连接结束使用ResultSet对象7/20/2023161加载JDBCdriver

驱动程序一般都由数据库厂商提供//1注册,加载JDBC驱动

DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());

7/20/2023172与数据库建立连接使用DriverManager类的getConnection()方法可以与指定的数据库建立连接。如:Stringurl="jdbc:oracle:thin:127.0.0.1:1521:stan";Stringusername="stan";Stringpassword="stan";

Connectionconn=null;//2与数据库建立连接conn=DriverManager.getConnection(url,username,password);其中的username和password分别对应所连数据库的用户名和口令。7/20/2023183.创建一个Statement对象

//3创建Statement对象

Statementstmt=conn.createStatement();建立了Statement对象后,就可以利用该对象,根据行指定的SQL语句,执行对数据库的操作7/20/2023194.执行指定的SQL语句一旦建立了Statement对象后,就可以利用该对象的executeQuery()方法让数据库执行指定的SQL语句。如://4执行指定的sql语句Stringsql="selectempno,ename,salfromemp";ResultSetrs=stmt.executeQuery(sql);7/20/2023205.获取结果集中的数据

调用ResultSet对象的next()方法得到该集合中新的一行。如果ResultSet集合多于一行,可以用一个循环将它取出如://5获取结果集中的数据while(rs.next()){intno=rs.getInt("empno");Stringname=rs.getString("ename");System.out.println("EmpNo:"+no+"EmpName:"+name);}其中,ResultSet的getXXX()方法用于获取该行中指定列的值。7/20/2023216.关闭数据库连接对数据库操作结束后,通常要依次关闭打开的ResultSet,Statement和Connection对象。如:

rs.close();stmt.close();conn.close();要注意的是,前面介绍的许多方法如executeQuery()和executeUpdate()等方法均会产生一个SQLException的异常,所以使用这些语句时要作相应的异常处理7/20/202322

API小结Java.sql.DriverManagergetConnection(Stringurl,Stringuser,Stringpwd)//获得连接registerDriver(Driverdriver)//注册驱动Java.sql.ConnectioncreateStatement()//建立语句对象,以执行sqlvoidclose()//关闭当前连接Java.sql.StatementexecuteQuery(Stringsql)executeUpdate(Stringsql)booleanexecute(sql)如查返回结果集,则返回true,否则返回false7/20/202323API小结(续)Java.sql.ResultSetbooleannext()//使当前行下移getXxx(intcolumnNumber)//取指定列值getXxx(StringcolumnName)//取指定列名的值close()关闭7/20/202324PreparedStatement接口3-1PreparedStatement接口(预编译的SQL语句)PreparedStatement用于提高运行时效率执行PreparedStatement对象比执行Statement对象快Statement接口7/20/202325PreparedStatement表示预编译的SQL语句的对象。SQL语句被预编译并且存储在PreparedStatement对象中。然后可以使用此对象高效地多次执行该语句

要多次执行一个SQL语句,使用PreparedStatement

SQL语句在创建时提供参数在执行PreparedStatement时,只传递参数值通过不同的参数值多次调用如://创建Statement对象,预编译sql语句Stringsql=“updateempsetsal=sal+?whereempno=?”;pstmt=conn.prepareStatement(sql);7/20/202326为预编译sql赋值

在创建PreparedStatement对象之后,必须为参数赋值使用setXXX方法如:

//为已经预编译的sql赋值pstmt.setInt(1,1);//为第一个参数(?)赋值1pstmt.setInt(2,7369);//为第二个参数(?)赋值73697/20/202327PreparedStatement与Statement无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译使用PreparedStatement对象比使用Statement对象的速度更快。7/20/202328事务将一组语句组合起来,以便形成一个可以在所有语句都运行良好时进行提交的事务,或者在其中的一个语句出现错误时,就像所有命令都没有发出执行那样。也就是说:所有的语句都成功才算成功,一个语句失败所有的都失败,不允许其中一条语句成功,一条语句失败将各个命令组合成

温馨提示

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

评论

0/150

提交评论