按一下以編輯母片,第二層,第三層,第四層,第五層,JSP,动态网页新技术,*,第,14,章,数据变动功能网页,Statement&ResultSet,Statement,定义运行,SQL,指令所需的方法成员,如果运行的,SQL,是一种,SELECT,类型的指令,。,ResultSet,则封装,Statement,运行,SQL,指令之后所返回的数据内容,用户通过,ResultSet,取得,SQL,语句返回的数据内容,。,1,JSP,动态网页新技术,Statement&ResultSet Stateme,Statement&ResultSet,2,JSP,动态网页新技术,Statement&ResultSet2JSP 动态网页,Statement,成员,方 法,说 明,close(),结束对象,释放占用资源,addBatch(String sql),将要运行的,SQL,指令加到批次指令中,clearBatch(),清除所有的,SQL,批次运行指令,executeBatch(),运行,SQL,批次指令,execute(String sql),运行,SQL,一般指令,executeQuery(String sql),运行,SQL,查询指令,如,select,指令,executeUpdate(String sql),运行,SQL,更改指令,如,insert,、,delete,、,update,getConnection(),返回产生这个,Statement,对象的,Connection,对象,setMaxRows(int max),设定,ResultSet,对象中可包含的最多数据数目为,max,getMaxRows(),返回,ResultSet,对象中可包含的最多数据数目,3,JSP,动态网页新技术,Statement 成员方 法说 明close()结束对,ResultSet,成员,方 法,说 明,absolute(int index),移动指针到第,index,笔数据,first(),移动指针到第一笔数据,last(),移动指针到最后一笔数据,afterLast(),移动指针到最后一笔数据之后,beforeFirst(),移动指针到第一笔数据之前,next(),移动指针到下一笔数据,previous(),移动指针到上一笔数据,relative(int rows),将指针往上或往下移动,rows,个位置,往上移则,rows,为负数,往下移则,rows,为正数,4,JSP,动态网页新技术,ResultSet 成员方 法说 明absolute(i,ResultSet,成员,方 法,说 明,isAfterLast(),返回布尔值表示指针是否位于最后一笔数据之后,isBeforeFirst(),返回布尔值表示指针是否位于第一笔数据之前,isFirst(),返回布尔值表示指针是否位于第一笔数据的位置,isLast(),返回布尔值表示指针是否位于第一笔数据的位置,getRow(),返回目前指针所指数据的位置,5,JSP,动态网页新技术,ResultSet 成员方 法说 明isAfterLas,ResultSet,成员,方 法,说 明,getString(int index),返回目前指针所指的数据,第,index,字段中的字符串,getString(String name),返回目前指针所指的数据,字段名称为,name,中的字符串,getInt(int index),返回目前指针所指的数据,第,index,字段中的数值,getInt(int index),返回目前指针所指的数据,第,index,字段中的数值,getInt(String name),返回目前指针所指的数据,第,index,字段中的数值,deleteRow(),删除指针所在的该笔数据,refreshRow(),重设数据中的值为上一次更新前的值,getFetchSize(),返回,ResultSet,对象中可包含最多的数据笔数,close(),结束对象,释放占用资源,6,JSP,动态网页新技术,ResultSet 成员方 法说 明getString(,运行,SQL,一般指令,Connection con=DriverManager.getConnection(jdbc:odbc:webData);,Statement smt=con.createStatement();,String sql=create table people;,smt.execute(sql);,Statement,对象,smt,是由,Connection,类型的对象,con,调用,createStatement(),所产生的,而在定义了一个建立数据表的,SQL,指令字符串,sql,后,运行,smt.execute(sql),来运行,SQL,指令,。,7,JSP,动态网页新技术,运行SQL一般指令 Connection con=Dri,变动数据表,变动数据表结构的方式,只需将相关的,SQL,指令传入,execute(sql),方法即可,。,SQL,变动指令是指对数据库进行新增,(insert),、删除,(delete),或更新,(update),等操作,。,8,JSP,动态网页新技术,变动数据表变动数据表结构的方式,只需将相关的SQL指令传入e,运行,SQL,查询,指令,executeQuery(),方法,方法在运行完成之后,会返回一个,ResultSet,类型的对象,其中封装了代表查询结果的数据内容,:,Connection con=DriverManager.getConnection(jdbc:odbc:webData);,Statement smt=con.createStatement();,String sql=SELECT*FROM Author;,ResultSet rs=smt.executeQuery(sql);,9,JSP,动态网页新技术,运行SQL查询指令 executeQuery,ResultSet,对象,ResultSet,对象是运行,SQL,查询后,所产生的数据集合对象,代表,一种表格状的数据集合对象,包含,SQL,语句所产生的数据内容,。,10,JSP,动态网页新技术,ResultSet对象 ResultSet对象,指针位置,ResultSet,对象返回的时候,指针在第一条数据之前的开头位置,。,利用方法,next(),将指针往下移动,。,11,JSP,动态网页新技术,指针位置ResultSet对象返回的时候,指针在第一条数据之,获取字段内容,getString(),方法取得其中的字段值,。,strID=rs.GetString(0);,strName=rs.GetString(1);,根据字段的索引顺序,将索引值当作参数传入,getString(),方法,便可以取得字段的内容,。,12,JSP,动态网页新技术,获取字段内容 getString()方法取得其中的字段,SQL,批处理,指令,SQL,批处理,指令可一次,运行,多段SQL,指令,。,用户可以设定多个要运行的,SQL,指令,将这些,SQL,指令以,addBatch(),方法加到批处理文件中,而后引用,executeBacth(),方法运行,。,13,JSP,动态网页新技术,SQL批处理指令 SQL批处理指令可一次运行多段SQL指令。,交易,交易,是以一个批次为单位运行数个独立的,SQL,指令,。,交易将操作数据库的操作视为不可分割的过程,。,一旦过程中某段,SQL,运行发生错误,则先前所有运行完毕的步骤都将失效,只有整个交易过程成功运行完成之后,所有,SQL,指令的变动内容才会整个生效,。,14,JSP,动态网页新技术,交易交易是以一个批次为单位运行数个独立的SQL指令。14J,交易方法,交易的状态必须由,Connection,作设定,。,setAutoCommit(),用来设定是否目前的联机处于交易状态,。,rollback(),为取消交易的任何操作,将所有状态回复到未运行任何操作的初始状态。,commit(),则是确认所有交易的操作。,15,JSP,动态网页新技术,交易方法交易的状态必须由Connection作设定。15J,交易,过程,16,JSP,动态网页新技术,交易过程16JSP 动态网页新技术,设定交易,Connection,默认会自动确认每一次数据库的操作行为,要改变这,种行为,只需取消自动确认的行为即可,。,conn.setAutoCommit(false);,setAutoCommit(),接受一个,boolean,参数,当这个值为,false,的时候,联机的自动确认的预设行为会被取消,。,17,JSP,动态网页新技术,设定交易 Connection默认会自动确认每,取消,与确认,一旦这一段程序代码被运行,所有交易开始运行的操作都将失效:,conn.rollback();,当所有的操作都已经正确无误的被完成之后,呼叫,commit(),可以确认整个交易被完成,。,mit();,18,JSP,动态网页新技术,取消与确认一旦这一段程序代码被运行,所有交易开始运行的操作都,控制指针,默认情况下,,ResultSet,对象只能引用,next(),方法控制指针一次往前移动一格,。,Statement smt=con.createStatement,(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);,这行程序代码所生成的,Statement,对象,smt,来运行数据查询的,SQL,指令,产生的,ResultSet,对象其指针就不会被限定只能往下依序逐行移动了,。,19,JSP,动态网页新技术,控制指针默认情况下,ResultSet对象只能引用next(,JSTL SQL,标签,分 类,标 签,说 明,联机,setDataSource,设定数据来源,SQL,操作指令,query,设定,SQL,查询,param,设定,SQL,参数,update,设定,SQL,变动,dateParam,日期参数解析,transaction,批量交易,20,JSP,动态网页新技术,JSTL SQL标签分 类标 签说 明联机 setDa,语法,21,JSP,动态网页新技术,语法21,-,属性,属 性,动态,类 型,说 明,dataSource,是,String or javax.sql.DataSource,数据源名称字符串,可指定为,JNDI,来源或是,JDBC,联机字符串,driver,是,String,JDBC,参数字符串,驱动程序类名称,url,是,String,JDBC,参数字符串,数据来源名称,user,是,String,数据库用户账号,password,是,String,数据库用户密码,var,否,String,储存联机设定的变量名称,scope,否,String,变量范围,22,JSP,动态网页新技术,-属性属 性动态类,dataSource,dataSource,代表一个联机字符串,所有的联机信息可以被直接设,定在这个属性当中,。,url,driver,user,password,url,为联机数据库的来源位置,,,即,ODBC,数据源,。,driver,为所需的驱动程序类名称,。,user,与,password,则分别是数据库的联机账号与密码,如果数据库没有设定,则这两个值可以被省略,。,23,JSP,动态网页新技术,dataSource dataSource代表,属性设定,属 性,属 性 值,url,jdbc:odbc:webData,driver,sun.jdbc.odbc.JdbcOdbcDriver,24,JSP,动态网页新技术,属性设定属 性属 性 值urljdbc:odbc:webD,标签设定数据源,通过,标签设定数据来源,:,不使用数据源的设定方式如下,:,25,JSP,动态网页新技术,标签设定数据源 通过,语法,1:,