JDBC详细讲解_第1页
JDBC详细讲解_第2页
JDBC详细讲解_第3页
JDBC详细讲解_第4页
JDBC详细讲解_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、本章教学本章教学教学目标:教学目标:4.1 JDBC简介简介4.2 JDBC编程编程教学重点:教学重点: JDBC的开发步骤的开发步骤教学难点:教学难点: JDBC编程编程4.1 JDBC简介简介JDBC (Java Database Connectivity)1996年,年,sun公司提出。公司提出。是是Java程序与数据库系统通信的标准程序与数据库系统通信的标准API。它由一组用它由一组用Java程序语言编写的类和接口组成。程序语言编写的类和接口组成。作用作用规避数据库的不同,为程序开发人员访问数据库提供规避数据库的不同,为程序开发人员访问数据库提供统一的编程接口,即为统一的编程接口,即为

2、API;JDBC可以做什么?可以做什么?答:和数据库建立连接,发送答:和数据库建立连接,发送sql语句,处理数据库返语句,处理数据库返回的结果集,回的结果集,4.1 JDBC简介简介JDBC通过提供一个抽象的数据库接口,使得程序开通过提供一个抽象的数据库接口,使得程序开发人员在编程时可以不用绑定在特定数据库厂商的发人员在编程时可以不用绑定在特定数据库厂商的API上,大大增加了应用程序的可移植性。上,大大增加了应用程序的可移植性。4.1 JDBC简介简介JDBCJDBC 接口层接口层 JDBCJDBC 驱动层驱动层 J2EEJ2EE应用应用 JDBC APIJDBC API 数据库数据库 JDB

3、CJDBC 驱动程序驱动程序 数据库数据库 程序员开发程序员开发 SunSun 数据库厂商数据库厂商 应用层应用层 JDBC将应用程序与具体的数据库产品隔离,将应用程序与具体的数据库产品隔离,大大简化应用程序开发过程,提高可移植性。大大简化应用程序开发过程,提高可移植性。4.1.1 ODBCODBC:Open Database Donnectivity 由由microsoft提出提出,基于基于C语言的;语言的;ODBCODBC应用程序应用程序ODBCODBC应用程序应用程序 ODBC API ODBC API函数函数 ODBC ODBC 驱动程序管理器驱动程序管理器ODBC ODBC 驱动程序

4、驱动程序1 1ODBC ODBC 驱动程序驱动程序n n数据源数据源1 1数据源数据源n nODBCODBC的体系结构的体系结构4.1.2 JDBC驱动程序驱动程序1、JDBC-ODBC桥桥JDBC-ODBC桥把桥把JDBC操作操作翻译翻译成对应的成对应的ODBC调用。调用。在在JDBC刚产生时,刚产生时, JDBC-ODBC桥是非常有用的。通桥是非常有用的。通过它,开发者都可以使用过它,开发者都可以使用JDBC来访问一个来访问一个ODBC数据源。数据源。缺点:执行效率比较低;它需要在客户机上安装一个缺点:执行效率比较低;它需要在客户机上安装一个ODBC驱动,使用这一类驱动,就失去驱动,使用这

5、一类驱动,就失去JDBC平台无关的平台无关的好处;此外,好处;此外,ODBC驱动器需要客户端的管理。驱动器需要客户端的管理。4.1.3 JDBC APIJDBC API 为为Java应用程序开发者使用数据库提供了统一的编程接应用程序开发者使用数据库提供了统一的编程接口,它由一组口,它由一组Java类和接口组成:类和接口组成:java.sql包和javax.sql包java.sql 包含的类和接口主要对基本的数据库编程服务,如生成连接、执行包含的类和接口主要对基本的数据库编程服务,如生成连接、执行语句、以及准备语句和运行批处理查询等。也有一些高级的处理,如语句、以及准备语句和运行批处理查询等。也

6、有一些高级的处理,如批处理更新、事务隔离和可滚动结果集。批处理更新、事务隔离和可滚动结果集。在企业级在企业级java应用中进行的数据库操作远远不止数据库的连接并执应用中进行的数据库操作远远不止数据库的连接并执行语句,还需要考虑其它方面的要求,包括使用行语句,还需要考虑其它方面的要求,包括使用连接池连接池来优化资源的来优化资源的使用,实现使用,实现分布式事务处理分布式事务处理。 javax.sql 为连接管理、分布式事务和有的提供了更好的抽象,引入了容器管为连接管理、分布式事务和有的提供了更好的抽象,引入了容器管理的连接池、分布式事务和行集(理的连接池、分布式事务和行集(RowSet)4.1.3

7、 JDBC API所有的数据库JDBC驱动程序都应实现的重要接口是:ljava.sql.DriverManager 处理驱动程序的调入并且对驱动程序进行管理。处理驱动程序的调入并且对驱动程序进行管理。ljava.sql.Connection 代表对特定数据库的连接。代表对特定数据库的连接。ljava.sql.Statement代表一个特定的容器,用以对一个特定的数据库执行代表一个特定的容器,用以对一个特定的数据库执行SQL语句。语句。ljava.sql.ResultSet 控制对一个特定语句的行数据的存取。控制对一个特定语句的行数据的存取。4.1.4 JDBC主要对象主要对象1. 连接(连接(

8、Connection)2. 语句(语句(Statement)3. 结果集结果集(ResultSet)4.1.4 JDBC主要对象主要对象1. 连接(连接(Connection)连接是客户端连接是客户端Java代码和数据库之间的通信连接,由代码和数据库之间的通信连接,由JDBC驱动程序建立。它保存了所有对数据库服务器调用驱动程序建立。它保存了所有对数据库服务器调用的上下文信息。的上下文信息。4.1.4 JDBC主要对象主要对象2.语句语句用于对数据库发送数据操纵命令,通过语句对象,可用于对数据库发送数据操纵命令,通过语句对象,可以完成获取结果集,对数据库记录进行以完成获取结果集,对数据库记录进行

9、CRUD。4.2 JDBC编程编程创建数据库连接,分为以下几步:创建数据库连接,分为以下几步:1. 装载并注册数据库的装载并注册数据库的JDBC驱动程序驱动程序2.建立连接建立连接3.建立建立Statement 对象对象4.准备并执行调用准备并执行调用SQL语句语句5. 处理处理ResultSet中的记录集中的记录集6.释放资源释放资源4.2 JDBC编程编程/*装载驱动装载驱动获取连接获取连接创建语句对象创建语句对象 */ Class.forName(driver); con=DriverManager.getConnection(url,user,pass); stmt=con.creat

10、eStatement(); /*准备并执行调用准备并执行调用SQL语句语句*/ sqlstr=insert into +tableName+ values(000099995,中国,45); stmt.executeUpdate(sqlstr); sqlstr=select * from +tableName; rs=stmt.executeQuery(sqlstr);4.2 JDBC编程编程/*处理处理ResultSet中的记录集中的记录集*/ ResultSetMetaData rsmd=rs.getMetaData(); /获取元数据获取元数据 int j=0; j=rsmd.getCo

11、lumnCount(); /获得结果集的行数获得结果集的行数 for(int k=0;kj;k+) System.out.print(rsmd.getColumnName(k+1); /显示表中字段属性显示表中字段属性 System.out.print(t); System.out.print(n); while(rs.next() /显示结果集的内容显示结果集的内容 for(int i=0;ij;i+) System.out.print(rs.getString(i+1); System.out.print(t); System.out.print(n); 4.2 JDBC编程编程/* 异常

12、处理异常处理 */ catch(ClassNotFoundException e1) System.out.println(数据库驱动不存在!数据库驱动不存在!); System.out.println(e1.toString(); catch(SQLException e2) System.out.println(数据库异常!数据库异常!); System.out.println(e2.toString(); 4.2 JDBC编程编程/* 关闭连接关闭连接 */ finally try /* 关闭对象关闭对象*/ if(rs!=null) rs.close(); if(stmt!=null)

13、 stmt.close(); if(con!=null) con.close(); catch(SQLException e) System.out.println(e.toString(); 4.2.1 注册驱动注册驱动注册驱动注册驱动a.通过类装载器通过类装载器: Class.forName(“com.mysql.jdbc.Driver”);b.直接实例化驱动直接实例化驱动: java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver();c.通过通过jdbc.drivers属性属性System.setProperty(“

14、jdbc.drivers”,”com.microsoft.sqlserver.jdbc.SQLServerDriver”);4.2.2 建立连接建立连接建立连接建立连接通过通过DriverManager: Connection con=DriverManager.getConnection(url,user,password);url表示连接数据库的表示连接数据库的JDBC URL,一般形式为一般形式为 jdbc:drivertype:driversubtype:/parameterjdbc指出要使用指出要使用JDBCdrivertype驱动程序的类型,该部分也叫驱动程序的类型,该部分也叫su

15、bprotocaldriversubtype可选的参数可选的参数parameter通常用来设置数据库服务器的通常用来设置数据库服务器的IP地址、端口号和数据地址、端口号和数据库的库的 名称。名称。4.2.2 建立连接建立连接常用的URLl对对MySQL ,数据库数据库URL为为 jdbc:mysql:/localhost:3306/dbNamel对对Oracle 数据库数据库,数据库数据库URL为为 jdbc:oracle:thin:localhost:1521:dbnamel 对对SQLSERVER2000 ,数据库数据库URL为为 jdbc:microsoft:sqlserver:/loc

16、alhost:1433;DatabaseName=dbNamel如果通过如果通过JDBC-ODBC Driver连接数据库,数据库连接数据库,数据库URL为:为:jdbc:odbc:datasource4.2.3 准备并执行准备并执行SQL语句语句建立建立Statement 对象对象Statement statement= con.createStatement();准备并执行调用准备并执行调用SQL语句语句String sql=“select * from Employees”;ResultSet rs= statement.executeQuery(sql);执行语句的种类执行语句的种类l

17、statement.executeQuery(); 返回类型返回类型ResultSetlstatement.executeUpdate();返回类型返回类型int,执行此,执行此sql语句所影响语句所影响的记录数。的记录数。lstatement.execute();返回类型返回类型boolean,代表执行此语句是否有,代表执行此语句是否有resultset,返回,返回ture就是有就是有。4.2.4 处理记录集处理记录集处理处理ResultSet中的记录集中的记录集只有只有select语句语句才会有结果集返回;才会有结果集返回;lrs是一个游标,初始时在第一条记录的上面一行。是一个游标,初始时

18、在第一条记录的上面一行。l每每next一次,向下一行;此外,还有一次,向下一行;此外,还有beforeFirst()和和last()。lgetString,获取记录的数据。可以使用位置标识,也可以使用列名,获取记录的数据。可以使用位置标识,也可以使用列名来标识(当结果集字段比较多的时候用列名标识法,可以增强程序来标识(当结果集字段比较多的时候用列名标识法,可以增强程序的可读性)。的可读性)。l结果集的方法还有很多,请参考结果集的方法还有很多,请参考JDK的帮助文档的帮助文档String sql=“select * from Employees”;ResultSet rs= statement.

19、executeQuery(sql);while(rs.next() String col1=rs.getString(1); String col2=rs.getString(fname); float col3=rs.getFloat(3);4.2.4 处理记录集处理记录集获取元数据获取元数据ResultSetMetaData rsmd=rs.getMetaData();int columncount = rsmd.getColumnCount();for ( int i=1;i= columncount ;i+)out.println(rsmd.getColumnName);out.println(rsmd.getColumnTypeName)4.2.5释放资源释放资源5.释放资源释放资源一般写在一般写在finally语句块中。所释放的资源一般有语句块中。所释放的资源一般有ResultSet,Statement,Connection

温馨提示

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

评论

0/150

提交评论