资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,第,11,章 数据库应用,本章导读,在众多的计算机应用中,有一类重要的计算机应用,称为数据密集型应用,例如,管理信息系统、办公信息系统、银行信息系统、民航定票系统、情报检索系统等,这是最大的计算机应用领域,管理这种大量的、持久的、共享的数据需要数据库技术。,JDBC,是,Sun,提供的一套数据库编程接口,由,Java,语言编写的类、界面组成。用,JDBC,编写的程序能够自动地将,SQL,语句传送给相应的数据库管理系统,而且通过使用,JDBC,,开发人员可以很方便地将,SQL,语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问,Oracle,,写另一个程序访问,MySQL,,再写一个程序访问,SQL Server,。,使用,Java,编写的应用程序可以在任何支持,Java,的平台上运行,,Java,和,JDBC,的结合可以让开发人员在开发数据库应用程序时真正实现“一次编写,处处运行!”。,本章要点,JDBC,的类和接口,JDBC,访问数据库的步骤,Java,连接数据库的方法,11.1,基础知识,11.1.1 JDBC,JDBC,(,Java Database Connectivity,)是一种可用于执行,SQL,语句的,JavaAPI,(,Application Programming Interface,,应用程序设计接口),它由一些,Java,语言编写的类和界面组成。,JDBC,为数据库应用开发人员和数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯,Java,语言编写完整的数据库应用程序。,JDBC,的类和接口,在,Java,语言中提供了丰富的类和接口用于数据库编程,利用它们可以方便地进行数据的访问和处理。下面主要介绍,Java.sql,包中提供的常用类和接口。,类型,名称,说 明,类,Date,接收数据库的,Date,对象,DriverManager,注册、连接以及注销等管理数据库驱动程序任务,DriverPropertyInfo,管理数据库驱动程序的属性,Time,接收数据库的,Time,对象,Types,提供预定义的整数列表与各种数据类型的一一对应,接口,Array,Java,语言与,SQL,语言中的,ARRAY,类型的映射,Blob,Java,语言与,SQL,语言中的,BLOB,类型的映射,CallableStatemet,执行,SQL,存储过程,Clob,Java,语言与,SQL,语言中的,CLOB,类型的映射,Connection,应用程序与特定数据库的连接,DatabaseMetaData,数据库的有关信息,Driver,驱动程序必须实现的接口,ParameterMetaData,PreparedStatement,对象中变量的类型和属性,PreparedStatement,代表预编译的,SQL,语句,Ref,Java,语言与,SQL,语言中的,REF,类型的映射,ResultSet,接收,SQL,语句并返回结果,ResultSetMetaData,查询数据库返回的结果集的有关信息,SQLData,Java,语言与,SAL,语言中用户自定义类型的映射,Statement,执行,SQL,语句并返回结果,Struct,Java,语言与,SQL,语言中的,structured,类型的映射,异常,BatchUpdatedExceptions,批处理的作业中至少有一条指令失败,DataTruncation,数据被意外截断,SQLException,数据存取中的错误信息,SQLWarning,数据存取中的警告,DriverManager,类,用来管理数据库中的所有驱动程序。它可以跟踪可用的驱动程序,注册、注销以及为数据库连接合适的驱动程序、设置登录时间限制等。,方 法,说 明,static void,deregisterDriver(Driver,driver),注销指定的驱动程序,static Connection,getConnection(String,url,),连接指定的数据库,static Connection,getConnection(String,url,String user,String password),以指定的用户名和密码连接指定数据库,static Driver,getDriver(String,url,),获取建立指定连接需要的驱动程序,static Enumeration,getDrivers,(),获取已装载的所有,JDBC,驱动程序,static,int,getLoginTimeout,(),获取驱动程序等待的秒数,static void,println(String,message),注册指定驱动程序,static void,setLoginTimeout(int,seconds),设置驱动程序等待连接的最大时间限制,Connection,接口,Connection,接口用于应用程序和数据库的相连。,Connection,接口中提供了丰富的方法用于建立各种,Statement,对象、设置数据处理的各种参数等。,方 法,说 明,void close(),关闭当前连接并释放资源,void commit(),提交对数据库所做的改动,释放当前连接特有的数据库的锁,Statement,createStatement,(),创建,Statement,对象,Statement,createStatement(int,resultSetType,int,resultSetConcurrency,),创建一个要生成特定类型和并发性结果集的,Statement,对象,String,getCatalog,(),获取,Connection,对象的当前目录,boolean,isClosed,(),判断连接是否关闭,boolean,isReadOnly,(),判断连接是否处于只读状态,CallableStatement,prepareCall(String,sql,),创建,CallableStatement,对象,PreparedStatement,prepareStatement(String,sql,),创建,PreparedStatemen,对象,void rollback(),回滚当前事务中的所有改动,释放当前连接特有的数据库的锁,void,setReadOnly(boolean,readOnly,),设置连接为只读模式,Statement,接口,Statement,接口用于在已经建立连接的基础上向数据库发送,SQL,语句,,Statement,接口中包含了执行,SQL,语句和获取返回结果的方法。,Statement,接口,方 法,说 明,void,addBatch(String,sql,),在,Statement,语句中增加,SQL,批处理语句,void cancel(),取消,SQL,语句指定的数据库操作指令,void,clearBatch,(),清除,Statement,语句中的,SQL,批处理语句,void close(),关闭,Statement,语句指定的数据库连接,boolean,execute(String,sql,),执行,SQL,语句(用于执行返回多个结果集或者多个更新数据库的语句),int,executeBatch,(),批处理执行多个,SQL,语句,ResultSet,executeQuery(String,sql,),执行,SQL,查询语句,并返回结果集,int,executeUpdate(String,sql,),执行,INSERT,、,UPDATE,或,DELETE,语句以及,SQL DDL,(数据定义语言)语句,返回值说明执行该语句所影响数据表中的行数,Connection,getConnection,(),获取对数据库的连接,int,getFetchSize,(),获取结果集的行数,int,getMaxFieldSize,(),获取结果集的最大字段数,int,getMaxRows,(),获取结果集的最大行数,int,getQueryTimeout,(),获取查询超时时间设置,ResultSet,getResultSet,(),获取结果集,void,setCursorName(String,name),设置数据库游标的名称,void,setFetchSize(int,rows),设置结果集的行数,void,setMaxFieldSize(int,max),设置结果集的最大字段数,void,setMaxRows(int,max),设置结果集的最大行数,void,setQueryTimeout(int,seconds),设置查询超时时间,利用,Statement,接口可以实现数据库的插入、删除、修改和查询操作。,/,插入数据,String,insertsql,=INSERT INTO,student(xh,sname,ssex,)VALUES(1,张三,女,);/,插入,sql,st.execute(insertsql,);,/,删除数据,String,deletesql,=DELETE FROM student,WHERExh,=1;/,删除,sql,int,result=,st.executeUpdate(deletesql,);/,如果,result0,则成功,否则失败。,/,修改数据,String,updatesql,=UPDATE student SET,sname,=,李四,WHERExh,=1;/,修改,sql,int,result=,st.executeUpdate(updatesql,);/,如果,result0,则成功,否则失败。,/,查询数据,String,selectsql,=SELECT*FROM student;/,查询,sql,ResultSet,rs,=,st.executeQuery(selectsql,);,ResultSet,接口,ResultSet,接口用来暂时存放数据库查询操作所获得的结果,用来对结果集中的数据进行访问,方 法,说 明,boolean,absolute(int,row),将游标移动到结果集的某一行,void,afterLast,(),将游标移动到结果集的末尾,void,beforeFirst,(),将游标移动到结果集的头部,void,deleteRow,(),删除结果集中的当前行,void,insertRow,(),在结果集中插入一行,void,moveToInsertRow,(),移动游标到新插入的行,void,updateRow,(),更新修改记录,boolean,first(),将游标移动到结果集的第一行,XXX,getXXX(int,conlumnIndex,),获取当前行某一列的值,返回值的类型为,XXX,void,updateXXX(int,conlumnIndex,XXX,x),更新当前行列号为,conlumnIndex,的值为,x,void,updateXXX(int,conlumnName,XXX,x),更新当前行列名为,conlumnName,的值为,x,Statement,getStatement,(),获取产生该结果集的,Statement,对象,int,getType,(),获取结果集的类型,boolean,inAfterLast,(),判断游标是否指向结果集的末尾,boolean,isBeforeFirst,(),判断游标是否指向结果集的头部,boolean,isFirst,(),判断游标是否指向结果集的第一行,boolean,isLast,(),判断游标是否指向结果集的最后一行,boolean
展开阅读全文