第六章 数据库连接_第1页
第六章 数据库连接_第2页
第六章 数据库连接_第3页
第六章 数据库连接_第4页
第六章 数据库连接_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

第六章数据库连接第1页,共40页,2023年,2月20日,星期三重点+难点数据库环境的配置利用JDBC驱动实现对数据库的访问第2页,共40页,2023年,2月20日,星期三6.1数据库和常用的SQL语句数据库管理系统(DBMS)是一个软件系统,它具有存储、检索和修改数据的功能,数据库关联系统具有4个发展阶段。层次型、网络型、关系型和关系对象型。我们使用的是SQLServer2000,mysqlJDBC是Sun公司提供的一组类和接口,程序员可以利用这组类和接口与数据库进行通信。JDBC接口,非常方便的实现了在java中连接数据库第3页,共40页,2023年,2月20日,星期三SQL语句创建删除数据库createdatabasebookdropdatabasebook创建删除表createtableitem(item_Idint,item_namevarchar(20))droptableitem更改表的结构altertableitemadditem_disvarchar(100)altertableitemdropitem第4页,共40页,2023年,2月20日,星期三SQL语句创建删除视图createviewproducts(productname,quantity,listprice)ductname,v.qty,i.listpricefromproductp,inventoryv,ductId=ductidanditwmid=v.itemiddeleteviewproducts插入一条语句insert语句是用来向表中添加记录的insertintoitemvalues(1,“计算机”,“计算机工程类的书籍”)第5页,共40页,2023年,2月20日,星期三SQL语句在表中删除数据delete删除表中已经存在的一条或多条记录deletefromitemwhereitem_Id=1;更新表中的数据update语句用来修改表中已经存在的一条或多条记录updateitemsetintem_name=“法学”whereitem_Id=1第6页,共40页,2023年,2月20日,星期三SQL语句条件子句(1)where语句使用where可以选择满足条件的特定记录(2)in和notin选择列值与列值表中某一个值相等的相关信息(3)between…and和notbetween…and选择列值在某个范围的记录(4)like和notlike(5)isnull和notnull(6)逻辑运算and和or(7)orderby语句第7页,共40页,2023年,2月20日,星期三6.2JDBC技术和驱动程序

6.2.1JDBC技术介绍JDBCAPI为Java开发人员使用数据库提供了统一的编程接口,它由一组Java类和接口组成。JDBCAPI使得开发人员可与使用纯Java语言的方式来连接数据库,并进行操作。企业级环境中进行的数据库操作远远不只是连接数据库并执行语句,还需要考虑其它方面的要求。包括使用连接缓冲池来优化资源的使用,实现分布式事务处理。第8页,共40页,2023年,2月20日,星期三JDBC3.0版本包含了两个包:Java.sql和Javax.sqlJava.sql这个包中的类和接口主要是针对基本的数据库编程服务,如生成连接、执行语句、以及准备语句和运行批处理查询等。同时也有一些高级操作,比如批处理更新、事物隔离和可滚动结果集等。Javax.sql这个包主要是为数据库方面的高级操作提供接口和类。如连接管理类、创建语句类第9页,共40页,2023年,2月20日,星期三6.2.2数据库驱动器程序数据库厂商一般会提供一组API访问数据库,有些厂商也专门提供数据库驱动程序,并且这些产品除了执行驱动的功能外,往往还提供一些额外的服务。JDBC驱动程序是数据库厂商根据Sun公司提供的JDBC接口标准提供的一组实现类。JDBC驱动程序的类型JDBC-ODBC桥驱动程序及ODBC驱动程序

本地API部分Java驱动程序

JDBC-Net纯Java驱动程序

本地协议纯Java驱动程序

第10页,共40页,2023年,2月20日,星期三有4种类型的数据库驱动程序JDBC-ODBC桥通过JDBC-ODBC桥,开发者可以使用JDBC访问一个ODBC数据源。JDBC-ODBC桥驱动程序为Java应用程序提供了一种把JDBC调用映射成ODBC调用的方法。因此在客户端计算机上安装一个ODBC驱动。缺点:效率相对底下。部分Java,部分本机驱动程序这种驱动程序使用Java实现与数据库厂商专有API混合形式来提供数据访问。它比JDBC-ODBC桥的形式快。在这种方势力,必须在运行Java应用程序的客户端安装驱动程序和厂商专有的API。现在大多数的数据库厂商都在其数据库产品中提供该驱动程序第11页,共40页,2023年,2月20日,星期三中间数据访问服务器 这种形式使用中间数据访问服务器。通过这种服务器,他可以把Java客户端连接到多个数据库服务器上。他不需要客户端的数据库驱动,而是使用网络-服务器中层来访问一个数据库。该类型的驱动程序使用网络协议,并完全通过Java驱动,他为Java应用程序提供了一种进行JDBC调用的机制。纯Java驱动程序 这种方式使用厂商专有的网络协议把JDBCAPI调用转换称直接的网络调用,这种方式的本质是使用套接字进行编程。纯Java驱动运行在客户端,并且直接访问数据库。它的使用比较简单,客户端不需要安装任何中间件或者运行库。现在大部分厂商都提供第4类驱动程序的支持。第12页,共40页,2023年,2月20日,星期三四种访问方式比较第1、2类驱动程序是数据库厂商为提供第4类JDBC驱动程序的一种过渡解决方案,例如通过JDBC访问Access数据库。第3类驱动程序适合那种需要同时连接多个不同种类的数据库,并且对并发连接要求高的三层应用程序中。第1、2、4类驱动程序常用于C/S模式的应用程序中。访问速度:2>4>1 稳定性:4>2>1第13页,共40页,2023年,2月20日,星期三6.3JDBC常用接口使用介绍1.Driver接口每个数据库驱动程序必须实现Driver接口。对于JSP开发者而言,只要使用Driver接口就可以了。在编程中要连接数据库,必须先装载特定厂商提供的数据库驱动程序(Driver),不同驱动程序的装载方法。使用JDBC-ODBCBridgeDriver,这样装载:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

对于Access适用第14页,共40页,2023年,2月20日,星期三使用JDBCDriver,这样装载

Class.forName(“jdbc.driver_class_name”);在使用Class.forName之前,先适用import语句导入java.sql包。

importjava.sql.*;装载MSSQLServer驱动:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);装载MySQLJDBC驱动:Class.forName(“org.git.mm.mysql.Driver”);装载OracleJDBC驱动:Class.forName(“oracle.jdbc.driver.OracleDriver”);第15页,共40页,2023年,2月20日,星期三2.DriverManager(驱动程序管理器) DriverManager是JDBC(Java数据库连接)的管理层。作用于用户和驱动程序之间。DriverManager可以跟踪驱动程序,并在数据库和相应驱动程序之间建立连接。

DriverManager激发getConnection()方法时,DriverManager首先从它已加载的驱动程序池中找到一个可以接受该数据库URL的驱动程序,然后请求该驱动程序使用相关的数据库URL连接到数据库中,于是getConnection()方法建立了与数据库连接。第16页,共40页,2023年,2月20日,星期三DriverManager.getConnection()方法(静态的)staticconnectiongetConnection(Stringurl);staticconnectiongetConnection(Stringurl,Stringinfo);staticconnectiongetConnection(Stringurl,Stringname,Stringpwd);URL:类似于其他场合的URL,语法如下:jdbc:<subprotocol>:<subname>jdbc:表示协议,他是唯一的,JDBC只有这一种协议子协议:主要用于识别数据库驱动程序,也就是说,不同的数据库驱动程序的子协议不同子名:它属于专门的驱动程序,不同的专有驱动程序可以采用不同的实现第17页,共40页,2023年,2月20日,星期三数据库连接字符串数据库驱动程序名称URLMicrosoftAccesssun.jdbc.odbc.JdbcOdbcDriverjdbc:odbc:studentMicrosoftSqlServer2000com.microsoft.jdbc.sqlserver.SQLServerDriverjdbc:microsoft:sqlserver://localhost:1433;databasename=studentMicrosoftSqlServer2005com.microsoft.sqlserver.jdbc.SQLServerDriverjdbc:sqlserver://localhost:2667;databasename=studentOracle9ioracle.jdbc.driver.OracleDriverjdbc:oracle:thin:@localhost:1521:studentjdbc:oracle:oci:@student第18页,共40页,2023年,2月20日,星期三3.Connection

一个Connection表示与一个特定数据库的会话。Connection对象代表与数据库的连接。连接过程包括所执行的SQL语句和在连接上所返回的结果。

Connectionconn=DriverManager.getConnection(url,login,pwd);Connection接口是JSP编程中使用最频繁的接口之一。Connection接口中常用到的方法:

close():关闭连接。

isclose():判断连接是否关闭。

createStatement():创建SQL语句对象。第19页,共40页,2023年,2月20日,星期三getAutoCommit():获得当前自动提交状态。commit():提交对数据库的更改,使更改生效。setAutoCommit(booleanvalue):设置连接是否处于自动提交状态。rollback():回滚上一次提交或回滚操作后的所有更改prepareStatement(Stringsql):可以被预编译存放在prepareStatement对象中,该对象用于有效地多次执行该语句。prepareCall(Stringsql):返回值是创建的CallableStatement对象,可以用来处理一个SQL存储过程setReadOnly():可以把一个连接设置为只读状态。isReadOnly():检测该连接是否存在只读状态第20页,共40页,2023年,2月20日,星期三4.StatementStatement对象代表SQL语句。可用于将SQL语句发送至数据库。Statement对象存在3种。

Statement对象,用来执行基本的SQL语句。

PrepareStatement对象,从Statement继承,用于提供可以查询信息一起预编译的语句。

CallableStatement,它继承自PrepareStatement,用来执行数据库中的存储过程。Statement常用的方法:

cancle():用于一个线程取消另一个线程正在执行的一条语句。第21页,共40页,2023年,2月20日,星期三close():用来关闭语句。同时立即释放该语句的数据库和JDBC资源。如果它有相应产生的ResultSet,则ResultSet也会被关闭。execute(Stringsql):执行一条可能返回多个结果的SQL语句。返回布尔值。若有ResultSet,则返回true,如果它是一个更新数据或没有其它结果,则返回false。executeQurey(Stringsql):执行一个返回单个ResultSet的SQL语句,返回值是由查询产生的数据ResultSet。executeUpdate(Stringsql):执行一条insert、update或delete语句或是没有返回值的SQL语句。该方法返回语句影响的行数,如果是没有影响的行数则返回0。第22页,共40页,2023年,2月20日,星期三getResultSet():得到当前的ResultSet的结果。getUpdateCount():得到更新的数量,如果结果是一个ResultSet或没有其他结果,则返回-1。5.PrepareStatementPrepareStatement类对象封装一条预编译的SQL语句,用于高效地多次执行该语句。常用的方法:clearParameters():立即释放当前参数值使用的资源execute():执行一条可能返回多个结果的SQL语句,返回一个布尔值。如果下一个结果是ResultSet,则返回true,否则返回false第23页,共40页,2023年,2月20日,星期三

executeQuery():执行准备好的SQL查询并返回ResultSetexecuteUpdate():执行一条insert、update或delete语句或是没有返回值的SQL语句。setBoolean(intparameterIndex,booleanx);setByte(intparameterIndex,bytex)setBytes(intparameterIndex,bytex)setDate(intparameterIndex,Datex)setDouble(intparameterIndex,doublex)setFloat(intparameterIndex,floatx)setInt(intparameterIndex,intx)setShort(intparameterIndex,shortx)第24页,共40页,2023年,2月20日,星期三6.ResultSetResultSet类可用来接受执行SQL查询语句后得到的记录集。第25页,共40页,2023年,2月20日,星期三

温馨提示

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

评论

0/150

提交评论