您的位置:首页 > 编程语言 > Java开发

Java中五中常用的调用存储过程方法

2014-04-07 22:32 639 查看
  例子3:调用有默认值的存储过程

  import java.sql.CallableStatement;

  import java.sql.Connection;

  import java.sql.DriverManager;

  import java.sql.SQLException;

  public class TestDefaultProc {

  private static Connection connection = null;

  public static ConnectiongetConnection(){

  try {

  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

  connection =DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb","sa","sa");

  } catch (ClassNotFoundExceptione) {

  e.printStackTrace();

  } catch (SQLException e){

  e.printStackTrace();

  }

  return connection;

  }

  public static void main(String[] args) {

  Connection connection =TestDefaultProc.getConnection();

  try{

  int id =0;

  //设置调用的存储过程名及默认参数的情况

  CallableStatementproc = connection.prepareCall("{ call test_default_proc(default, ?)}");

  //设置输出参数及返回类型

  proc.registerOutParameter(1,java.sql.Types.INTEGER);

  proc.execute();

  //取出存储过程的返回值

  id =proc.getInt(1);

  System.out.println("人员ID为:"+id);

  connection.close();

  }catch (SQLException e){

  e.printStackTrace();

  }

  复制代码

  // 以下为存储过程的定义

  // create proctest_default_proc

  // @usernamevarchar(20)='silas',@pid int output

  // as

  // declare@uid int

  // set @uid =0

  // select@uid=userid from users where username=@username

  // if@uid<>0

  // set @pid = @uid

  // else

  // set @pid = 0

  }

  复制代码

  例子4:调用返回两个以上结果集的存储过程(重点)

  import java.sql.CallableStatement;

  import java.sql.Connection;

  import java.sql.DriverManager;

  import java.sql.ResultSet;

  import java.sql.SQLException;

  public class TestProcMulResultSet {

  private static Connection connection = null;

  public static ConnectiongetConnection(){

  try {

  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

  connection =DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb","sa","sa");

  } catch (ClassNotFoundExceptione) {

  e.printStackTrace();

  } catch (SQLException e){

  e.printStackTrace();

  }

  return connection;

  }

  public static void main(String[] args) {

  Connection connection =TestProc.getConnection();

  try{

  ResultSet rs= null;

  //设置调用的存储过程名及参数情况,注意的是存储过程不可以有输出参数

  CallableStatementproc = connection.prepareCall("{ calltest_proc_mulresultset(?)}");

  //设置输入参数

  proc.setInt(1,11);

  //调入存储过程

  proc.execute();

  //取出存储过程的结果集

  booleanhasResult = true;

  while (hasResult) {

  rs = proc.getResultSet();

  while(rs.next()) {

  System.out.println("第一条记录第二个字段值为:"+rs.getString(2));

  break;

  }

  hasResult = proc.getMoreResults();

  }

  connection.close();

  }catch (SQLException e){

  e.printStackTrace();

  }

  复制代码

  // create proctest_proc_mulresultset

  // @id int

  // as

  // select * from users where userid=@id

  // select * from users order by userid desc

  }

  }

  复制代码

  以上四个例子仅做参考.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: