天天看点

Java调用存储过程(带输出参数)

     上星期老师布置实验,题目中有一个要求用Java来调用存储过程。为了完成作业,在网上差了好些资料还看过视频,现在终于有点眉目了。以为自己找的有点辛苦,想必其他人也会如此,因此想把自己编程的经验和大家一块分享。我也是初次使用java调用存储过程,有什么不对的地方还请大家指教,我在此谢过了。

java 编程工具使用myeclipse

数据库使用sql server 2005

存储过程

create proc denglu

  @name char(20),

  @pwd char(20),

  @msg char(30) output

as

  if exists(select * from user_table where Login_name = @name)

  begin

     if exists(select * from user_table where Login_name = @name and password = @pwd)

        set @msg = '用户名与密码都正确,登陆成功'

     else

        set @msg ='密码错误,请重新输入'

  end

  else

     set @msg = '用户名不正确,请重新输入'

java 代码 

package world;

import java.sql.*;

public class Sql {

 public static void main(String[] args) {

  // TODO 自动生成方法存根

  String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

  String url = "jdbc:sqlserver://localhost:1433;databaseName=hystu";

  Connection conn = null;

  //Statement stmt = null;

  try{

   Class.forName(driver);

   conn = DriverManager.getConnection(url, user_name,password)

   if(conn != null ){

    System.out.println("成功连接JDBC数据库");

   }

  }catch(Exception ex){

   ex.printStackTrace();

  }

  // 3、操作数据库

  // 通过Connection对象实例化Statement对象

  String name = "stu1";//输入的参数 1

  String pwd = "111";//输入的参数 2

  CallableStatement call = null;

  String sql = "{ call denglu(?,?,?)}" ;

  try

  {

   //Statement stmt = conn.createStatement() ;

   // 为sql变量赋值

   // 插入语句

   call = conn.prepareCall(sql);

   call.registerOutParameter(3, java.sql.Types.VARCHAR);//要向外输出的参数,types.varchar表示输出的参数是字符串类型或是字符型

   call.setString(1, name);//输入第一个参数

   call.setString(2, pwd);//输入第二个参数

   call.execute();//执行

   System.out.println(call.getString(3));//输出要输出的参数

   call.close();

  }

  catch(Exception e)

  {

   System.out.println("操作数据库失败!!!") ;

  }

  try{

   conn.close();

  }catch(Exception ex){

   ex.printStackTrace();

  }

 }

}