Java程序设计 14 JDBC_第1页
Java程序设计 14 JDBC_第2页
Java程序设计 14 JDBC_第3页
Java程序设计 14 JDBC_第4页
Java程序设计 14 JDBC_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、第14章 JDBC技术主要内容14.1 JDBC概述14.2 通过JDBC建立连接14.3了解数据库的信息14.4 查询数据库14.5 检索结果集14.6 更新数据库14.7 JDBC案例14.1 JDBC概述将Java语言和Sql结合的一个很好的编程接口。支持基本SQL功能的一个通用低层的应用程序编程接口,在不同的数据库功能模块上提供了一个统一的用户界面。是为Java语言定义的一个SQL调用级(CLI)界面。SQL语言SQL,Structured Query Language,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。除了 SQL 标准之外

2、,大部分 SQL 数据库程序都拥有它们自己的私有扩展。如: T-SQL, PL/SQL使用Transact-SQL 查询及执行语句查询:Select top 2 * from users where id=beamingorder by id更新:Update users set psw=123 where id=beaming插入:Insert into users (id,psw) values (abc,123)删除:Delete from users where id=abcJDBC的结构Jdbc有两种接口,分别是面向开发人员的JDBC API和面向低层的JDBC Driver API

3、,Java 应用程序JDBC APIJDBC ManagerJDBC Drvier APIJDBC-NetDriverJDBC-ODBCBridge DriverODBC andDB DriverDriver ADriver BPulblishedprotocolProprietaryDatabase accessprotocol。JDBC的结构JDBC API 是一系列的接口,他使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果。JDBC 的结构Java.sql.DriverManager用来装载驱动程序,并且为创建新的数据库联接提供支持。Java.sql.Connection

4、完成对某一指定数据库的联接Java.sql.Statement在一个给定的连接中作为SQL执行声明的容器,包含两个重要的子类。Java.sql.PreparedSatement用于执行预编译的sql声明Java.sql.CallableStatement用于执行数据库中存储过程的调用Java.sql.ResultSet取得SQL执行结果JDBC Driver interface是面向驱动程序开发商的接口,每一个驱动程序都必须提供对于java.sql.Connection, java.sql.Statement, java.sql.PreparedStatement , java.sql .Re

5、sultSet等主要接口的实现方法。Java.sql.DriverManager需要装载驱动程序时,每个驱动程序需要提供一个能实现java.sql.Driver接口的类。例如:sun.jdbc.odbc.JdbcOdbcDrivercom.microsoft.jdbc.sqlserver.SQLServerDriver JDBC驱动程序的类型Jdbc-odbc桥Native-api partly java driver本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库 Net-protocol all-java Driver(Jdbc proxy)是一种完全利用Java编写的

6、JDBC驱动,这种驱动程序将JDBC转换为与DBMS无关的网络协议,然后将这种协议通过网络服务器转换为DBMS协议。Native-protocol all-java driver是一种完全利用Java编写的JDBC驱动,这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。14.2 通过JDBC建立连接所有Jdbc程序的第一步都是与数据库建立连接,得到一个java.sql.Connection的对象,包括两个步骤:(1) 加载驱动程序通过设置Java属性中的sql.driver来制定驱动程序列表。这个属性是一系列的用冒号隔开的Driver类的名称。驱动程序所在的包存在于构建路径。

7、使用Class.forName()显式加载驱动程序。例如 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); 加载了sun公司提供的jdbcodbc桥驱动程序,在数据库连接时,DriverManager将试图使用此驱动程序;Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”); 加载SqlServer的驱动程序通过JDBC建立连接(2) 建立连接指定数据库连接的url,数据源的位置使用DriverManager.getConnection(url)例如:String url“jdbc

8、:odbc:datasource”; 或者“jdbc:microsoft:sqlserver:/server_name:1433” Connection conn=DriverManager.getConnection(url);或者:Connection conn=DriverManager.getConnection(String url , String user , String password)Connection con = DriverManager.getConnection (jdbc:microsoft:sqlserver:/localhost:1433; Databas

9、eName=学生“;,sa,123456);14.3 了解数据库中的信息在和数据库建立连接后,就可以获得有关数据源的各种信息:表,列,数据类型,存储过程等。这些信息通过DatabaseMetaData类的对象上实现的。 DatabaseMetaData dbma=conn.getMetaData();DatabaseMetaData主要方法基本信息getURL();getUserName()isReadOnly()getDatabaseProduceName()j;getDriverName();getDriverVersion();其他getTables(),getColumns(),get

10、IndexInfo();实例14.4查询数据库 (Statement)(1)创建StatementStatement stmt=conn.createStatement();(2)执行查询语句String sql=“select * from customer”ResultSet rs=stmt.executeQuery(sql);executeQuery()一般用于执行一个sql语句,返回一个结果集,execute()方法返回多个结果集,一个Statement对象在同一时间只能打开一个结果集,对第二个结果集的打开隐含着对第一个结果集的关闭.(3)关闭Statement stmt.close(

11、)查询数据库 (PreparedStatement)Statement对象在每次执行sql语句时都将语句传给数据库,在多次执行同一个语句时,效率比较低.可以使用PreparedStatement,使用数据库的预编译功能,速度可以提高很多.PreparedStatement对象的sql语句可以接受参数,每次执行时可以传递不同的参数.查询数据库 (PreparedStatement)(1)创建String sql=“select * from customer where age=?”PreparedStatement pstmt=conn.prepareStatement(sql);(2)执行p

12、stmt.setInt(1,30);/指定第1个参数值为30ResultSet=pstmt.executeQuery();(3)关闭Pstmt.close();查询数据库 (CallableStatement)用于执行存储过程(1)通过Connection的对象的prepareCall()创建一个CallableStatement对象,格式为: call procedureName, procedureName是存储过程名. CallableStatement cstmt=conn.prepareCall(“call Query1()”);(2)执行 ResultSet rs=cstmt.ex

13、ecuteQuery();(3)关闭 cstmt.close();14.5 检索结果集ResultSet对象包括一个由查询语句返回的一个表,这个表中包含所有的查询结果,按照行和列进行处理。ResultSet对象维持一个指向当前行的指针.最初,这个指针指向第一行之前.ResultSet类的next()方法使这个指针移向下一行。 next方法的返回值是一个boolean值,若为true,则成功移向下一行。若返回false则没有下一行。getXXX()方法可以从某一列中获得结果.其中XXX是JDBC中的java数据类型.如getInt(参数);需要指定检索的列名或index值(index从1开始)检

14、索结果集Statement stmt=conn.createStatement();String sql=“select a,b,c from mytable”;ResultSet rs=stmt.executeQuery(sql);While (rs.next()int i=rs.getInt(2); String s=rs.getString(“a”);byte b=rs.getBytes(3); int crow=rs.getrow()/获取当前行号14.6 更新数据库包括修改,更新和删除记录, 对应于数据库的insert,update ,delete等.对数据库的更新操作也是通过Statement对象完成的.不使用executeQuery()方法,使用executeUpdate()方法.executeUpdate的返回值是它影响的记录的行数.更新数据库String sql=“update Custome

温馨提示

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

评论

0/150

提交评论