《第六章数据库连接精选文档.ppt》由会员分享,可在线阅读,更多相关《第六章数据库连接精选文档.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章数据库连接本讲稿第一页,共四十页重点+难点l数据库环境的配置l利用JDBC驱动实现对数据库的访问本讲稿第二页,共四十页6.1 数据库和常用的SQL语句l数据库管理系统(DBMS)是一个软件系统,它具有存储、检索和修改数据的功能,数据库关联系统具有4个发展阶段。层次型、网络型、关系型和关系对象型。l我们使用的是SQL Server2000,mysqllJDBC是Sun公司提供的一组类和接口,程序员可以利用这组类和接口与数据库进行通信。JDBC接口,非常方便的实现了在java中连接数据库本讲稿第三页,共四十页SQL语句l创建删除数据库create database bookdrop data
2、base bookl创建删除表create table item(item_Id int,item_name varchar(20)drop table iteml更改表的结构alter table item add item_dis varchar(100)alter table item drop item本讲稿第四页,共四十页SQL语句l创建删除视图create view products(productname,quantity,listprice)as select p.productname,v.qty,i.listprice from product p,inventory v,
3、item i where p.productId=i.productid and itwmid=v.itemiddelete view productsl插入一条语句insert语句是用来向表中添加记录的insert into item values(1,“计算机”,“计算机工程类的书籍”)本讲稿第五页,共四十页SQL语句l在表中删除数据delete删除表中已经存在的一条或多条记录delete from item where item_Id=1;l更新表中的数据update语句用来修改表中已经存在的一条或多条记录update item set intem_name=“法学”where item
4、_Id=1 本讲稿第六页,共四十页SQL语句l条件子句(1)where语句使用where可以选择满足条件的特定记录(2)in和not in选择列值与列值表中某一个值相等的相关信息(3)betweenand和not betweenand选择列值在某个范围的记录(4)like和not like(5)is null和not null(6)逻辑运算and和or(7)order by语句本讲稿第七页,共四十页6.2 JDBC技术和驱动程序6.2.1JDBC技术介绍lJDBC API为Java开发人员使用数据库提供了统一的编程接口,它由一组Java类和接口组成。JDBC API使得开发人员可与使用纯Jav
5、a语言的方式来连接数据库,并进行操作。l企业级环境中进行的数据库操作远远不只是 连接数据库并执行语句,还需要考虑其它方面的要求。包括使用连接缓冲池来优化资源的使用,实现分布式事务处理。本讲稿第八页,共四十页JDBC 3.0 版本包含了两个包:Java.sql和Javax.sqllJava.sql 这个包中的类和接口主要是针对基本的数据库编程服务,如生成连接、执行语句、以及准备语句和运行批处理查询等。同时也有一些 高级操作,比如批处理更新、事物隔离和可滚动结果集等。lJavax.sql 这个包主要是为数据库方面的高级操作提供接口和类。如连接管理类、创建语句类本讲稿第九页,共四十页6.2.2数据库
6、驱动器程序l数据库厂商一般会提供一组API访问数据库,有些厂商也专门提供数据库驱动程序,并且这些产品除了执行驱动的功能外,往往还提供一些额外的服务。lJDBC驱动程序是数据库厂商根据Sun公司提供的JDBC接口标准提供的一组实现类。JDBC 驱动程序的类型 JDBC-ODBC桥驱动程序及桥驱动程序及ODBC驱动程序驱动程序 本地本地API部分部分Java驱动程序驱动程序 JDBC-Net 纯纯Java驱动程序驱动程序 本地协议纯本地协议纯Java驱动程序驱动程序 本讲稿第十页,共四十页有4种类型的数据库驱动程序lJDBC-ODBC桥桥 通过JDBC-ODBC桥,开发者可以使用JDBC访问一个O
7、DBC数据源。JDBC-ODBC桥驱动程序为Java应用程序提供了一种把JDBC调用映射成ODBC调用的方法。因此在客户端计算机上安装一个ODBC驱动。缺点:效率相对底下。l部分部分Java,部分本机驱动程序,部分本机驱动程序 这种驱动程序使用Java实现与数据库厂商专有API混合形式来提供数据访问。它比JDBC-ODBC桥的形式快。在这种方势力,必须在运行Java应用程序的客户端安装驱动程序和厂商专有的API。现在大多数的数据库厂商都在其数据库产品中提供该驱动程序本讲稿第十一页,共四十页l中间数据访问服务器中间数据访问服务器 这种形式使用中间数据访问服务器。通过这种服务器,他可以把Java客
8、户端连接到多个数据库服务器上。他不需要客户端的数据库驱动,而是使用网络-服务器中层来访问一个数据库。该类型的驱动程序使用网络协议,并完全通过Java驱动,他为Java应用程序提供了一种进行JDBC调用的机制。l纯纯Java驱动程序驱动程序 这种方式使用厂商专有的网络协议把JDBC API调用转换称直接的网络调用,这种方式的本质是使用套接字进行编程。纯Java驱动运行在客户端,并且直接访问数据库。它的使用比较简单,客户端不需要安装任何中间件或者运行库。现在大部分厂商都提供第4类驱动程序的支持。本讲稿第十二页,共四十页四种访问方式比较l第第1、2类驱动程序是数据库厂商为提供第类驱动程序是数据库厂商
9、为提供第4类类JDBC驱动程序的一种过渡解决方案,例驱动程序的一种过渡解决方案,例如通过如通过JDBC访问访问Access数据库。数据库。l第第3类驱动程序适合那种需要同时连接多个类驱动程序适合那种需要同时连接多个不同种类的数据库不同种类的数据库,并且对并发连接要求高并且对并发连接要求高的三层应用程序中。的三层应用程序中。l第第1、2、4类驱动程序常用于类驱动程序常用于C/S模式的应模式的应用程序中。用程序中。l访问速度访问速度:241稳定性稳定性:421本讲稿第十三页,共四十页6.3 JDBC常用接口使用介绍1.Driver接口 每个数据库驱动程序必须实现Driver接口。对于JSP开发者而
10、言,只要使用Driver接口就可以了。在编程中要连接数据库,必须先装载特定厂商提供的数据库驱动程序(Driver),不同驱动程序的装载方法。使用JDBC-ODBC BridgeDriver,这样装载:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);对于Access适用本讲稿第十四页,共四十页使用 JDBC Driver,这样装载 Class.forName(“jdbc.driver_class_name”);在使用Class.forName之前,先适用import语句导入java.sql包。import java.sql.*;装载MS SQLServ
11、er 驱动:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);装载 MySQL JDBC驱动:Class.forName(“org.git.mm.mysql.Driver”);装载 Oracle JDBC驱动:Class.forName(“oracle.jdbc.driver.OracleDriver”);本讲稿第十五页,共四十页2.DriverManager(驱动程序管理器)DriverManager 是JDBC(Java数据库连接)的管理层。作用于用户和驱动程序之间。DriverManager 可以跟踪驱动程序,并在
12、数据库和相应驱动程序之间建立连接。DriverManager激发getConnection()方法时,DriverManager首先从它已加载的驱动程序池中找到一个可以接受该数据库URL的驱动程序,然后请求该驱动程序使用相关的数据库URL连接到数据库中,于是getConnection()方法建立了与数据库连接。本讲稿第十六页,共四十页DriverManager.getConnection()方法(静态的)static connection getConnection(String url);static connection getConnection(String url,String in
13、fo);static connection getConnection(String url,String name,String pwd);URL:类似于其他场合的URL,语法如下:jdbc:jdbc:表示 协议,他是唯一的,JDBC只有这一种协议子协议:主要用于识别数据库驱动程序,也就是说,不同的数据库驱动程序的子协议不同子名:它属于专门的驱动程序,不同的专有驱动程序可以采用不同的实现本讲稿第十七页,共四十页数据库连接字符串数据数据库库 驱动驱动程序名称程序名称URLMicrosoft Accesssun.jdbc.odbc.JdbcOdbcDriverjdbc:odbc:studentM
14、icrosoft Sql Server 2000com.microsoft.jdbc.sqlserver.SQLServerDriverjdbc:microsoft:sqlserver:/localhost:1433;databasename=studentMicrosoft Sql Server 2005com.microsoft.sqlserver.jdbc.SQLServerDriverjdbc:sqlserver:/localhost:2667;databasename=studentOracle 9ioracle.jdbc.driver.OracleDriverjdbc:oracle
15、:thin:localhost:1521:studentjdbc:oracle:oci:student本讲稿第十八页,共四十页3.Connection一个Connection表示与一个特定数据库的会话。Connection对象代表与数据库的连接。连接过程包括所执行的SQL语句和在连接上所返回的结果。Connection conn=DriverManager.getConnection(url,login,pwd);Connection接口是JSP编程中使用最频繁的接口之一。Connection接口中常用到的方法:close():关闭连接。isclose():判断连接是否关闭。createSta
16、tement():创建SQL语句对象。本讲稿第十九页,共四十页getAutoCommit():获得当前自动提交状态。commit():提交对数据库的更改,使更改生效。setAutoCommit(boolean value):设置连接是否处于自动提交状态。rollback():回滚上一次提交或回滚操作后的所有更改prepareStatement(String sql):可以被预编译存放在prepareStatement对象中,该对象用于有效地多次执行该语句。prepareCall(String sql):返回值是创建的CallableStatement 对象,可以用来处理一个SQL存储过程set
17、ReadOnly():可以把一个连接设置为只读状态。isReadOnly():检测该连接是否存在只读状态本讲稿第二十页,共四十页4.StatementStatement对象代表SQL语句。可用于将SQL语句发送至数据库。Statement对象存在3种。Statement对象,用来执行基本的SQL语句。PrepareStatement对象,从Statement继承,用于提供可以查询信息一起预编译的语句。CallableStatement,它继承自PrepareStatement,用来执行数据库中的存储过程。Statement常用的方法:cancle():用于一个线程取消另一个线程正在执行的一条语
18、句。本讲稿第二十一页,共四十页close():用来关闭语句。同时立即释放该语句的数据库和JDBC资源。如果它有相应产生的ResultSet,则ResultSet也会被关闭。execute(String sql):执行一条可能返回多个结果的SQL语句。返回布尔值。若有ResultSet,则返回true,如果它是一个更新数据或没有其它结果,则返回false。executeQurey(String sql):执行一个返回单个ResultSet的SQL语句,返回值是由查询产生的数据ResultSet。executeUpdate(String sql):执行一条insert、update或delete语
19、句或是没有返回值的SQL语句。该方法返回语句影响的行数,如果是没有影响的行数则返回0。本讲稿第二十二页,共四十页getResultSet():得到当前的ResultSet的结果。getUpdateCount():得到更新的数量,如果结果是一个ResultSet或没有其他结果,则返回-1。5.PrepareStatementPrepareStatement类对象封装一条预编译的SQL语句,用于高效地多次执行该语句。常用的方法:clearParameters():立即释放当前参数值使用的资源execute():执行一条可能返回多个结果的SQL语句,返回一个布尔值。如果下一个结果是ResultSet
20、,则返回true,否则返回false本讲稿第二十三页,共四十页 executeQuery():执行准备好的SQL查询并返回ResultSet executeUpdate():执行一条insert、update或delete语句或是没有返回值的SQL语句。setBoolean(int parameterIndex,boolean x);setByte(int parameterIndex,byte x)setBytes(int parameterIndex,byte x)setDate(int parameterIndex,Date x)setDouble(int parameterIndex,
21、double x)setFloat(int parameterIndex,float x)setInt(int parameterIndex,int x)setShort(int parameterIndex,short x)本讲稿第二十四页,共四十页6.ResultSet ResultSet 类可用来接受执行SQL查询语句后得到的记录集。本讲稿第二十五页,共四十页JDBC连接数据库流程开 始导入 java.sql包 加载并注册驱动程序创建一个 Connection 对象创建一个 Statement 对象执行SQL语句关闭ResultSet 对象关闭Statement对象关闭连接结 束使用Re
22、sultSet对象本讲稿第二十六页,共四十页程序演示演示创建数据库连接的具体步骤演示创建数据库连接的具体步骤本讲稿第二十七页,共四十页错误提示lsocket establish error错误的解决方法检查SQL Server服务是否启动对于Windows XP、Windows 2003操作系统,确保SQL Servler 2000升级至sp3以上版本(用netstat n-a)查看端口是否打开如果系统安装了防火墙软件,请暂时关闭实时监控选项本讲稿第二十八页,共四十页记录查询实例本讲稿第二十九页,共四十页实例本讲稿第三十页,共四十页本讲稿第三十一页,共四十页向数据库中插入记录本讲稿第三十二页,共四十页代码本讲稿第三十三页,共四十页本讲稿第三十四页,共四十页删除一条记录本讲稿第三十五页,共四十页代码本讲稿第三十六页,共四十页本讲稿第三十七页,共四十页修改一条记录:本讲稿第三十八页,共四十页本讲稿第三十九页,共四十页本讲稿第四十页,共四十页