java 调用存储过程详解与实例(1/3)

java 调用存储过程
1、使用不带参数的存储过程
          使用 jdbc 驱动程序调用不带参数的存储过程时,必须使用 call sql 转义序列。不带参数的 call 转义序列的语法如下所示:

 {call procedure-name} 作为实例,在 sql server 2005 adventureworks 示例数据库教程中创建以下存储过程:

以下是引用片段:

create procedure getcontactformalnames
  as
  begin
   select top 10 title + ' ' + firstname + ' ' + lastname as formalname
   from person.contact
  end

此存储过程返回单个结果集,其中包含一列数据(由 person.contact 表中前十个联系人的称呼、名称和姓氏组成)。

  在下面的实例中,将向此函数传递 adventureworks 示例数据库的打开连接,然后使用 executequery 方法调用 getcontactformalnames 存储过程。

以下是引用片段:
  

public static void executesprocnoparams(connection con) ...{
   try ...{
   statement stmt = con.createstatement();
  resultset rs = stmt.executequery("{call dbo.getcontactformalnames}");
  
   while (rs.next()) ...{
 system.out.println(rs.getstring("formalname"));
  }
  rs.close();
  stmt.close();
  }
  catch (exception e) ...{
  e.printstacktrace();
  }
  }

2、使用带有输入参数的存储过程

     使用 jdbc 驱动程序调用带参数的存储过程时,必须结合 sqlserverconnection 类的 preparecall 方法使用 call sql 转义序列。带有 in 参数的 call 转义序列的语法如下所示:{call procedure-name[([parameter][,[parameter]]...)]} 构造 call 转义序列时,请使用 ?(问号)字符来指定 in 参数。此字符充当要传递给该存储过程的参数值的占位符。可以使用 sqlserverpreparedstatement 类的 setter 方法之一为参数指定值。可使用的 setter 方法由 in 参数的数据类型决定。

  向 setter 方法传递值时,不仅需要指定要在参数中使用的实际值,还必须指定参数在存储过程中的序数位置。例如,如果存储过程包含单个 in 参数,则其序数值为 1。如果存储过程包含两个参数,则第一个序数值为 1,第二个序数值为 2。作为如何调用包含 in 参数的存储过程的实例,使用 sql server 2005 adventureworks 示例数据库中的 uspgetemployeemanagers 存储过程。此存储过程接受名为 employeeid 的单个输入参数(它是一个整数值),然后基于指定的 employeeid 返回雇员及其经理的递归列表。下面是调用此存储过程的 java 代码:

 

     public static void executesprocinparams(connection con) ...{
   try ...{
   preparedstatement ps教程tmt = con.preparestatement("{call dbo.uspgetemployeemanagers(?)}");
   pstmt.setint(1, 50);
   resultset rs = pstmt.executequery();
   while (rs.next()) ...{
   system.out.println("employee:");
   system.out.println(rs.getstring("lastname") + ", " + rs.getstring("firstname"));
   system.out.println("manager:");
   system.out.println(rs.getstring("managerlastname") + ", " + rs.getstring("managerfirstname"));
   system.out.println();
   }
   rs.close();
   pstmt.close();
   }
   catch (exception e) ...{
   e.printstacktrace();
   }
  } 

首页 1 2 3 末页

时间: 2024-09-19 20:34:44

java 调用存储过程详解与实例(1/3)的相关文章

Java 反射机制详解及实例代码_java

Java反射详解 本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解. 下面开始正文. [案例1]通过一个对象获得完整的包名和类名 package Reflect; /** * 通过一个对象获得完整的包名和类名 * */ class Demo{ //other codes... } class hello{ public static void main(String[] args) {

thinkPHP中钩子的两种配置调用方法详解_php实例

本文实例讲述了thinkPHP中钩子的两种配置调用方法.分享给大家供大家参考,具体如下: thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置.下面是我个人的设置经验,在这里跟大家分享一下. 个人做了两种设置,都试验成功了,一个简单点,在thinkphp

Java transient 关键字详解及实例代码_java

Java transient 关键字 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化. 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见

Java 方法签名详解及实例代码_java

java 方法签名,我想做java 开发的朋友也知道,方法签名的重要性,是方法重载的一个比较好的解释,尤其是在后续优化方面,这里记录下,有看到的朋友也可看下, 方法签名的意义 对于同名不同类.同类不同名的方法,方法签名的意义并不是很大,但是对于重载方法来说,方法签名的意义就十分巨大了.由于重载方法之间的方法名是相同的,那么我们势必要从构成方法的其他几个要素中找到另一个要素与方法名组成能够唯一标示方法的签名,方法体当然不予考虑.那么就是形参列表和返回值了,但是由于对于调用方法的人来说,方法的形参数

java Arrays类详解及实例代码_java

最近做项目 用到Arrays 类,这里整理下,希望大家能够掌握Arrays . 1.Arrays类概述   针对数组进行操作的工具类.   提供了排序,查找等功能. 2.成员方法   public static String toString(int[] a)   public static void sort(int[] a)   public static int binarySearch(int[] a,int value) package com; import java.util.Ar

C#调用存储过程详解(带返回值、参数输入输出等)_C#教程

本文实例讲述了C#调用存储过程的方法.分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=studentname FROM student WHERE studentid=@studentid if @@Error<>0 RETURN -1 else RETURN 0 E

java split用法详解及实例代码_java

public String[] split(String regex) 默认limit为0 public String[] split(String regex, int limit) 当limit>0时,则应用n-1次 public static void main(String[] args) { String s = "boo:and:foo"; String[] str = s.split(":",2); System.out.print(str[0]

Java实现调用MySQL存储过程详解_java

前言 存储过程(Stored Procedure)是存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它. Java调用MySQL的存储过程,需要用JDBC连接,环境eclipse 首先查看MySQL中的数据库的存储过程,接着编写代码调用 mysql> show procedure status; +------+-------------+-----------+----------------+-------------

mysql 存储过程详解_Mysql

MySQL存储过程  14.1.1 创建存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]])          [characteristic ...] routine_body 其中,sp_name参数是存储过程的名称:proc_parameter表示存储过程的参数列表: characteristic参数指定存储过程的特性:routine_body参数是SQL代码的内容,可以用BEGIN-END