当前位置: 首页 > news >正文

蓟县网站制作长沙建站官网

蓟县网站制作,长沙建站官网,中国建设银行曲江支行网站,湖南企业电子注册登记网1 Java存储过程 这篇文章是关于Java DB中的Java存储过程的。 Java DB是基于Java编程语言和SQL的关系数据库管理系统。 这是Apache软件基金会的开源Derby项目的Oracle版本。 Java SE 7 SDK中包含Java DB。 在数据库内调用的Java代码是一个存储过程#xff08;或多个过程… 1 Java存储过程 这篇文章是关于Java DB中的Java存储过程的。 Java DB是基于Java编程语言和SQL的关系数据库管理系统。 这是Apache软件基金会的开源Derby项目的Oracle版本。 Java SE 7 SDK中包含Java DB。 在数据库内调用的Java代码是一个存储过程或多个过程。 Java存储过程是数据库端JDBCJava数据库连接例程。 过程代码以Java类方法定义并存储在数据库中。 这是使用SQL执行的。 该过程代码可以带有或不带有任何与数据库相关的代码。 其他数据库端或服务器端程序是触发器和表函数。 1.1 Java过程类型 根据在其中调用存储的事务存储过程有两种类型嵌套连接和非嵌套连接。 嵌套连接 这种过程使用与调用它的SQL语句相同的事务。 该过程代码使用与父SQL相同的连接并使用连接URL语法jdbc:default:connection 。 以下是获得连接的示例代码位 Connection c DriverManager.getConnection(jdbc:default:connection); 请注意此类型不支持连接URL属性。 示例代码位于 2.1创建 。 非嵌套连接 这种类型的过程使用新的数据库连接。 该过程是在与调用SQL不同的事务中执行的。 存储过程代码也可以连接到其他数据库。 以下位置的示例代码 3.1使用非嵌套连接 。 1.2过程中的SQL异常 过程中的SQL异常可以在过程代码中捕获和处理或在调用程序中传播捕获。 2创建和使用Java存储过程 这描述了在Java DB数据库中创建Java存储过程以及在SQL和Java代码中以交互方式使用它的过程。 使用Java编程语言创建存储过程代码。 该过程是带有签名的public static void procedureMethod方法中的Java代码。 创建存储过程并将其作为数据库对象存储在Java DB数据库中。 使用SQL命令或使用JDBC API从Java程序调用或调用该过程。 2.1建立 创建一个Java方法对其进行编译然后将该过程存储在数据库中。 2.1.1创建Java方法 以下是示例方法。 public static void testProc(int iParam1, String iParam2, int [] oParam)throws SQLException {String connectionURL jdbc:default:connection;Connection conn DriverManager.getConnection(connectionURL);String DML UPDATE TEST_TABLE SET NAME ? WHERE ID ?;PreparedStatement pstmnt conn.prepareStatement(DML);pstmnt.setString(1, iParam2);pstmnt.setInt(2, iParam1);int updateRowcount pstmnt.executeUpdate();oParam [0] updateRowcount; } // testProc() 该代码在Java类例如JavaStoredProcs.java 中创建并进行编译。 一个类中可以创建任意数量的过程方法。 在示例代码中 程序方法具有三个参数。 前两个参数iParam1和iParam2分别为IN第三个为OUT参数模式。 注意OUT参数指定为数组。 每个OUT和INOUT参数都需要在过程方法中指定为数组并且仅将数组的第一个元素用作过程参数变量即映射。 该过程使用嵌套连接。 抛出的任何SQL异常都可以在调用程序或过程方法中进行处理。 在这种情况下异常将在调用代码中处理。 2.1.2在数据库中创建过程 该过程是使用CREATE PROCEDURE语句在数据库中创建的。 该命令使用ij交互式运行或者使用JDBC API的java.sql.Statement接口从Java程序运行。 命令语法和详细信息如下 CREATE PROCEDURE procedure-Name(ProcedureParameters)ProcedureElements procedure-Name 是存储在数据库中的过程名称 如果未指定则在默认架构中创建。 ProcedureParameters 指定参数模式ININOUT或OUT可选名称和数据类型。 数据类型是数据库数据类型。 Java DB在过程中不支持长列类型例如Long VarcharBLOB等。 参数是可选的。 ProcedureElements:此元素必须包含以下三个元素并且可以具有其他可选元素。 语言JAVA。 这是唯一的值。 参数样式JAVA。 这是唯一的值。 外部名称。 这指定了执行过程时要调用的Java方法并采用ClassName.methodName Optional, procedure elements形式 ClassName.methodName Optional, procedure elements 动态结果集整数 确定性 外部安全 修改SQL数据默认值包含SQL读取SQL数据不使用SQL无数据库相关代码的过程 2.1.2.1使用ij交互式地在数据库中创建过程 ij是Java DB附带的命令行工具。 ij是一个JDBC工具用于在Java DB数据库上运行交互式查询。 ij CONNECT jdbc:derby:testDB; ij CREATE PROCEDURE PROC_NAME(IN id1 INTEGER, IN name2 VARCHAR(50), OUT count3 INTEGER) LANGUAGE JAVA EXTERNAL NAME JavaStoredProcs.testProc PARAMETER STYLE JAVA; 在示例中过程PROC_NAME在testDB数据库中创建。 先前创建的Java方法 2.1.1创建Java方法 被指定为EXTERNAL NAME。 要列出数据库中的过程请使用命令SHOW PROCEDURES。 2.2.2更改或删除过程 要更改过程请从数据库中删除该过程然后再次创建。 使用ij删除过程的示例 ij DROP PROCEDURE procedureName;2.2使用调用 使用SQL CALL命令以交互方式运行过程或者使用JDBC API从客户端程序以交互方式运行过程。 CALL SQL命令仅支持IN参数。 JDBC API的CallableStatement接口用于调用带有ININOUT或OUT参数的过程。 2.2.1 CALL SQL语句 CALL语句用于调用过程。 这不会返回值。 使用CALL调用时仅支持带有IN参数的过程。 以下示例显示了从ij运行的CALL命令以调用过程MyProc. MyProc MyProc. MyProc是数据库中使用CREATE PROCEDURE定义的过程的名称。 ij CALL MyProc(); 2.2.2从Java程序调用过程 此示例代码调用了先前创建的过程PROC_NAME2.1创建。 该代码使用JDBC API的CallableStatement接口有关更多详细信息请参见2.2.3关于CallableStatement的说明 。 在此示例方法的末尾将设置过程的输入参数并输出out参数值。 请注意此Java类与创建过程的类不同。 private static void runStoredProc(Connection conn)throws SQLException {int iParam1 1;String iParam2 updated name data;String proc {call PROC_NAME(?, ?, ?)};CallableStatement cs conn.prepareCall(proc);cs.setInt(1, iParam1);cs.setString(2, iParam2);cs.registerOutParameter(3, java.sql.Types.INTEGER);cs.executeUpdate();String oParam cs.getInt(3);System.out.println(Updated row count from the proc: oParam); } // runStoredProc() 2.2.3关于CallableStatement的说明 Java JDBC API的CallableStatement接口扩展了PreparedStatement并在java.sql包中定义。 这用于执行SQL存储过程。 该API提供了一种存储过程SQL转义语法该语法允许所有RDBMS以标准方式调用过程。 语法的一种形式包含结果参数另一种形式不包含结果参数。 如果使用则结果参数必须注册为OUT参数。 其他参数arg1arg2…可用于输入输出或两者都使用。 以下是语法分别具有返回值和不具有返回值 {? call procedure-name [(arg1, arg2, ...)]} {call procedure-name [(arg1, arg2, ...)]} 使用从PreparedStatement继承的setter方法设置IN参数值。 在使用registerOutParameter执行存储过程之前必须先注册所有OUT参数的类型。 它们的值在执行后通过getXxxint parameterIndex / StringparameterName方法getBooleangetArray等检索。 参数模式 参数属性IN默认OUT和INOUT是参数模式。 调用存储过程 String procName {call STORED_PRODURE_NAME(}; CallableStatement cs conn.prepareCall(procName); ResultSet rs cs.executeQuery(); 要调用存储过程请使用executeexecuteQuery或executeUpdate方法具体取决于过程返回的ResultSet对象数。 如果不确定该过程返回多少ResultSet对象请使用execute方法。 cs conn.prepareCall({call INCR_PRICE(?, ?)}); cs.setString(1, itemNameArg); // (1) cs.setFloat(2, newPriceArg); // (2a) cs.registerOutParameter(2, Types.NUMERIC); // (2b) cs.execute(); float newPrice cs.getFloat(2); // (2c) 第一参数1是IN参数。 第二个参数具有参数模式INOUT。 IN值是通过调用setter方法2a指定的并使用registerOutParameter方法2b注册OUT类型的。 通过吸气剂方法2c检索输出值。 3个例子 有两个示例第一个显示创建和使用非嵌套类型过程的代码第二个是Java DB预定义过程的示例用法。 3.1使用非嵌套连接 在此示例中Java过程访问的数据库和连接与调用程序中使用的数据库和连接不同。 该过程返回OUT整数参数值。 创建并编译过程代码。 public static void testProc4(int [] retval)throws SQLException {String connectionURL jdbc:derby:testDB2;Connection conn DriverManager.getConnection(connectionURL);Statement stmt conn.createStatement();ResultSet rs stmt.executeQuery(SELECT * FROM ID_TABLE);int nextid 0;while(rs.next()) {nextid rs.getInt(ID);}retval[0] nextid;conn.close(); // alternative: shutdown the database. } // testProc4() 在数据库中创建过程。 CREATE PROCEDURE PROC_NAME_4(OUT paramname INTEGER)LANGUAGE JAVAEXTERNAL NAME JavaStoredProcs.testProc4PARAMETER STYLE JAVAREADS SQL DATA; 过程元素READS SQL DATA指定SQL in过程方法只能使用SELECT语句。 调用客户端程序中的过程。 private static void runStoredProc4(Connection conn)throws SQLException {String proc {call PROC_NAME_4(?)};CallableStatement cs conn.prepareCall(proc);cs.registerOutParameter(1, java.sql.Types.INTEGER);cs.execute();int oParamData cs.getInt(1); // proc output value } // runStoredProc4() 3.2 Java DB内置系统过程 SYSCS_UTIL.SYSCS_BACKUP_DATABASE是预定义的且特定于Java DB的系统过程。 这会将数据库备份到指定目录。 语法为SYSCS_BACKUP_DATABASEIN backupDirPath VARCHAR。 该过程不返回值。 以下示例SQL命令调用该过程 CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE(c:/backupdir); 注意在http://www.javaquizplayer.com/blogposts/blogpost4.html上标题为“ 备份Java DB数据库 ”的博客文章中提供了详细的Java代码示例。 4笔记 4.1与客户端代码相比过程的某些优势 该例程允许将代码一次存储在数据库服务器上并且可以从多个应用程序进行访问。 而且与SQL相比代码可能很复杂。 该代码在服务器上执行因此减少了客户端-服务器应用程序中的网络流量。 这样可以提高应用程序的性能。 4.2其他RDBMS Oracle的10g和HyperSQL数据库HSQLDB是其他一些支持Java存储过程的数据库。 5参考 Apache Derby文档10.8手册 Java SE 7 API java.sql程序包 翻译自: https://www.javacodegeeks.com/2013/09/java-stored-procedures-in-java-db.html
http://www.zqtcl.cn/news/275688/

相关文章:

  • 数据需求 网站建设做qq空间的网站
  • 微信网站游戏网络规划设计师可以挂证吗
  • 有个做特价的购物网站网站建设与维护题库及答案
  • 长沙网站优化价格创意设计师个人网站
  • 滨河网站建设南京免费发布信息网站
  • 蓝色系列的网站邓砚谷电子商务网站建设
  • 德阳市住房和城乡建设局网站首页一个服务器可以建多少个网站
  • 建一个电商网站多少钱一起做网店货源app
  • 做网站用lunx代理记账 营销型网站
  • 凡客做网站怎么样WordPress分类目录 前100篇
  • 腾讯wordpress 建站教程本地的上海网站建设公司
  • 深圳市南山区住房和建设局官方网站上海专业网站建设公司站霸网络
  • 建网站的8个详细步骤网站集约化建设讲话
  • 建设局哪个网站查证南京注册公司多少钱
  • 免费的网站制作郑州中森网站建设
  • 网站关键词搜不到了濮阳网络教育
  • 推荐股票的好网站如何做好网站宣传
  • 免费网站模板网大型网络游戏
  • 网站开发语言数据库有几种广东省建设厅官网查询
  • 建新建设集团有限公司网站土巴兔装修公司电话
  • 百度网站审核期时间wordpress如何实现收费会员制
  • delphi 2010 网站开发wordpress 变装小说
  • asp.net电子商务网站前台模板企业所得税优惠政策2021年小微企业
  • 成都网站建设 lkcms深圳做网站哪个公司最好
  • 网站降权处理关于网站建设心得体会
  • 互联网站点与wordpress集成软件
  • 网站页面图片布局如何设计最新热点新闻事件
  • 学网站建设难四会市城乡规划建设局网站
  • 网站源码分享网html代码入门基础
  • 农产品网站开发方案陕西建设网成绩查询