网络数据库--JDBC高级应用

上传人:痛*** 文档编号:244011934 上传时间:2024-10-02 格式:PPT 页数:14 大小:69.50KB
返回 下载 相关 举报
网络数据库--JDBC高级应用_第1页
第1页 / 共14页
网络数据库--JDBC高级应用_第2页
第2页 / 共14页
网络数据库--JDBC高级应用_第3页
第3页 / 共14页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第七部分第三篇,JDBC,高级应用,本章主要内容有,程序操作预编译,事务管理,存储过程,7.,1,程序操作预编译,我们想对查询执行,1000次,用预编译语句处理,写成如下的形式:,PreparedStatement,prepStmt,=,con.,prepareStatement,(SELECT COF_NAME,PRICE FROM COFFEES);,ResultSet,rs,;,for(,int,i=0;i1000;i+),rs,=,prepStmt,.,executeQuery,();,7.,1,程序操作预编译,SELECT COF_NAME,SUP_ID FROM COFFEES WHERE COF_NAME LIKE Colombian;,SELECT COF_NAME,SUP_ID FROM COFFEES WHERE COF_NAME LIKE French_Roast;,SELECT COF_NAME,SUP_ID FROM COFFEES WHERE COF_NAME LIKE Espresso;,我们可以为一类查询设计一个模板,形式如下:,SELECT COF_NAME,SUP_ID FROM COFFEES WHERE COF_NAME LIKE?,7.,1,程序操作预编译,把上面的三条查询代码重新改写如下:,PreparedStatement,prepStmt,=,Con.,prepareStatement,(SELECT COF_NAME,SUP_ID FROM COFFEES+,WHERE COF_NAME LIKE?);,prepStmt.setString(1,Colombian);,prepStmt.setString(1,French_Roast);,prepStmt.setString(1,Espresso);,ResultSet,rs,=,prepStmt,.,executeQuery,();,7.,1,程序操作预编译,如果,LIKE,子句有大量的值需要绑定,参数的值可以事先存储在一个数组中,通过,I/O,流机制实现数据的输入和输出。,PreparedStatement,prepStmt,=,Con.,prepareStatement,(SELECT COF_NAME,SUP_ID FROM COFFEES+,WHERE COF_NAME LIKE?);,String coffees=Colombian,French_Roast,Espresso;,int,len,=coffees.length;,for(,int,i=0;i,len,;i+),prepStmt.setString(1,coffeesi);,ResultSet,rs,=,prepStmt,.,executeQuery,();,7.,2,事务管理,怎样在编程中实现对事务的管理呢?首先我们没有必要显示地启动一个事务,可以通过调用,Connection.,setAutoCommit,(false),隐式地实现。然后调用,Cmit(),方法来提交一个事务,而且如果考虑到代码的安全性,还要包括一个回滚,Connection.rollback()。,例如下面的这段代码:,7.,2,事务管理,con.,setAutoCommit,(false);,PreparedStatement,updateSales,=con.,prepareStatement,(,UPDATE COFFEES SET SALES=?WHERE COF_NAME LIKE?);,updateSales.setInt(1,50);,updateSales.setString(2,Colombian);,updateSales,.,executeUpdate,();,PreparedStatement,updateTotal,=con.,prepareStatement,(,UPDATE COFFEES SET TOTAL=TOTAL+?WHERE COF_NAME LIKE?);,updateTotal.setInt(1,50);,updateTotal.setString(2,Colombian);,updateTotal,.,executeUpdate,();,mit();,con.,setAutoCommit,(true);,7.,3,存储过程,创建一个存储过程,create procedure SHOW_SUPPLIERS,as,select SUPPLIERS.SUP_NAME,COFFEES.COF_NAME,from SUPPLIERS,COFFEES,where SUPPLIERS.SUP_ID=COFFEES.SUP_ID,order by SUP_NAME,7.,3,存储过程,将上面的,SQL,语言串保存在一个,String,变量中,以便后续使用。,String,createProcedure,=create procedure SHOW_SUPPLIERS +,as +,select SUPPLIERS.SUP_NAME,COFFEES.COF_NAME +,from SUPPLIERS,COFFEES +,where SUPPLIERS.SUP_ID=COFFEES.SUP_ID +,order by SUP_NAME;,7.,3,存储过程,创建一个,Statement,连接,并运行这个,SQL,语句串。,Statement stmt=con.,createStatement,();,stmt.,executeUpdate,(,createProcedure,);,7.,3,存储过程,JDBC,允许用户在应用程序中调用存储过程。首先需要创建一个,CallableStatement,对象。,CallableStatement,对象包含一个存储过程调用,而不是包含存储过程本身,存储过程调用要写在,中,并用“”引起来。,7.,3,存储过程,CallableStatement,cs,=con.,prepareCall,(call SHOW_SUPPLIERS);,ResultSet,rs,=,cs,.,executeQuery,();,7.,3,存储过程,程序执行得到的结果集可能如同下面的形式:,SUP_NAMECOF_NAME,-,Acme,Inc.Colombian,Acme,Inc.Colombian_Decaf,Superior CoffeeFrench_Roast,Superior CoffeeFrench_Roast_Decaf,The High GroundEspresso,7.,3,存储过程,上面的代码中执行,cs,的方法调用的是,executeQuery,(),方法,这是因为,cs,调用的存储过程包含了一个查询语句而且只生成一个结果集。如果存储过程中包含的是更新语句或,DDL,语句,则需要用,executeUpdate,(),方法来调用。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!