JDBC 调用存储过程:无参、输入带参、输出及输出带参

1、创建存储过程须在命令行先创建

2、

package xzg;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

public class JDBCtest {
	public static void main(String[] args) {
		//test();
		//test2();
		test3();
	}
   /*
    * 命令行创建的存储过程函数为: create procedure all_user() select * from user;
    *    创建一个查询所有内容的存储过程
    * 调用无参存储过程
    */
	static void test() {
		Connection conn = Dbutil.open();
		try {
			//存储过程函数固定格式:{call xxx}
			CallableStatement cs = conn.prepareCall("{call all_user()}");
			ResultSet rs = cs.executeQuery();
			while (rs.next()) {
				int id = rs.getInt(1);
				String name = rs.getString(2);
				int age = rs.getInt(3);
				System.out.println(id + "," + name + "," + age);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			Dbutil.close(conn);
		}
	}
	   /*
	    * 命令行创建的存储过程函数为:
	    * create procedure insert_user(in myname varchar(20),
	    * in myage tinyint(20)) insert user(username,age) values(myname,myemail);
*  表示创建一个插入myname,数据类型为varchar(20); myage,数据类型为tinyint(20)的存储过程
	    * 调用输入带参存储过程
	    */
	static void test2() {
		Connection conn = Dbutil.open();
		try {
			CallableStatement cs = conn.prepareCall("{call insert_user(?,?)}");
			cs.setString(1, "jack");
			cs.setInt(2, 10);
			cs.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			Dbutil.close(conn);
		}
	}
	   /*
	    * 命令行创建的存储过程函数为:
	    *  create procedure getnamebyid(in cid int,
	    * out return_name varchar(20)) select username into return_name 
	    * from user where id =cid;
	    * 表示创建一个如果id为cid,那么就输出返回一个return_name
	    * 调用输入、输出带参存储过程
	    */
	static void test3() {
		Connection conn = Dbutil.open();
		try {
			CallableStatement cs = conn.prepareCall("{call getnamebyid(?,?)}");
			cs.setInt(1, 3);  //索引1,第3个id
			//输出参数的话要注册
			cs.registerOutParameter(2, Types.CHAR);
			//注册后要更新
			cs.execute();
			String name =cs.getString(2);  //这个是索引的意思
			cs.executeQuery(); 
			System.out.println(name);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			Dbutil.close(conn);
		}
	}
}

  

转载于:https://www.cnblogs.com/zengjiao/p/6853873.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值