CallableStatement的实例
2015-08-14 12:59
176 查看
一、概念
CallableStatement 对象用于执行对数据库已存在的存储过程的调用。
二、先对存储过程语法说明
1、先配置一个存储过程
http://blog.csdn.net/u010439954/article/details/46475969
上面网页对存储过程的说明
2、表的结构test
id
varchar(12) primary key
name
varchar(12) not null
先插入一条数据
insert into test (id,name)values("001","wang");
3、创建测试用的存储过程
>delimiter //
>create proceduce test_proc(in user_id varchar(12), out user_name varchar(12))
->begin
->select name into user_name from test where id = user_id;
->end;
->//
->delimiter ;
4、查看存储过程是否存在 ,可忽略
select name from mysql.proc where db='自己的数据库名' and name='存储过程名如(test_proc)'
5、测试存储过程是否有效 ,可忽略
定义两个变量,并初始化
>set @user_id = '001';
>set @user_name = null;
调用存储过程
>call test_proc(@user_id,@user_name);
查看返回结果
>select @user_name;
有返回值则成功。
三、 CallableStatement 语法说明
其主要语法有 IN 和 OUT。
IN 参数传给 CallableStatement 对象是通过 setXXX 方法完成的。所传入参数的类型决定了所用的 setXXX 方法,如使用setInt(1,12);对数据库表中第一个整型类型的传入一个整型。
OUT 参数返回 储存数据。在执行 CallableStatement 对象以前必须先了解其数据表数据类型,注册每个 OUT 参数返回的 JDBC 类型。语句执行完后,CallableStatement 的 getXXX 方法将取回参数值。正确的 getXXX 方法是为各参数所注册的 JDBC 类型所对应的 Java 类型。
四、 CallableStatement 的java案例
java连接mysql的驱动包这里就不说了
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;
import java.sql.CallableStatement;
public class mysqltest {
public static void main(String args[]) {
Connection conn = null;
CallableStatement statement = null;
String url = "jdbc:mysql://localhost:3306/le?characterEncoding=UTF-8";
String username = "root";
String password = "123456";
try {
// 加载驱动程序以连接数据库
Class.forName("com.mysql.jdbc.Driver");
//使用各自的账号密码,连接数据库
conn = DriverManager.getConnection(url, username, password);
//数据库存储过程的方法
String sql = "{call test_proc(?,?)}";
//调用数据库存储过程
statement = conn.prepareCall(sql);
//对第一个参数传入字符串类型
statement.setString(1,"001");
//注册第二个参数为返回值,并定义为字符串类型
statement.registerOutParameter(2, Types.VARCHAR);
//执行数据库操作
int issucess = statement.executeUpdate();
if(issucess>0)
{
//返回第二个参数返回值
String msg=statement.getString(2);
System.out.println(msg);
}
} catch (Exception cnfex) {
cnfex.printStackTrace();
}
}
}
CallableStatement 对象用于执行对数据库已存在的存储过程的调用。
二、先对存储过程语法说明
1、先配置一个存储过程
http://blog.csdn.net/u010439954/article/details/46475969
上面网页对存储过程的说明
2、表的结构test
id
varchar(12) primary key
name
varchar(12) not null
先插入一条数据
insert into test (id,name)values("001","wang");
3、创建测试用的存储过程
>delimiter //
>create proceduce test_proc(in user_id varchar(12), out user_name varchar(12))
->begin
->select name into user_name from test where id = user_id;
->end;
->//
->delimiter ;
4、查看存储过程是否存在 ,可忽略
select name from mysql.proc where db='自己的数据库名' and name='存储过程名如(test_proc)'
5、测试存储过程是否有效 ,可忽略
定义两个变量,并初始化
>set @user_id = '001';
>set @user_name = null;
调用存储过程
>call test_proc(@user_id,@user_name);
查看返回结果
>select @user_name;
有返回值则成功。
三、 CallableStatement 语法说明
其主要语法有 IN 和 OUT。
IN 参数传给 CallableStatement 对象是通过 setXXX 方法完成的。所传入参数的类型决定了所用的 setXXX 方法,如使用setInt(1,12);对数据库表中第一个整型类型的传入一个整型。
OUT 参数返回 储存数据。在执行 CallableStatement 对象以前必须先了解其数据表数据类型,注册每个 OUT 参数返回的 JDBC 类型。语句执行完后,CallableStatement 的 getXXX 方法将取回参数值。正确的 getXXX 方法是为各参数所注册的 JDBC 类型所对应的 Java 类型。
四、 CallableStatement 的java案例
java连接mysql的驱动包这里就不说了
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;
import java.sql.CallableStatement;
public class mysqltest {
public static void main(String args[]) {
Connection conn = null;
CallableStatement statement = null;
String url = "jdbc:mysql://localhost:3306/le?characterEncoding=UTF-8";
String username = "root";
String password = "123456";
try {
// 加载驱动程序以连接数据库
Class.forName("com.mysql.jdbc.Driver");
//使用各自的账号密码,连接数据库
conn = DriverManager.getConnection(url, username, password);
//数据库存储过程的方法
String sql = "{call test_proc(?,?)}";
//调用数据库存储过程
statement = conn.prepareCall(sql);
//对第一个参数传入字符串类型
statement.setString(1,"001");
//注册第二个参数为返回值,并定义为字符串类型
statement.registerOutParameter(2, Types.VARCHAR);
//执行数据库操作
int issucess = statement.executeUpdate();
if(issucess>0)
{
//返回第二个参数返回值
String msg=statement.getString(2);
System.out.println(msg);
}
} catch (Exception cnfex) {
cnfex.printStackTrace();
}
}
}
相关文章推荐
- 编码转换(utf8转换为gb2312)
- jQuery插件Skippr实现焦点图
- 安装cygwin
- uva 10099 The Tourist Guide
- set/multiset用法详解
- Large Object Support大对象支持
- Android发展Singleton模式
- 用示波器 查看波特率是多少?
- 汉诺塔算法递归版
- 一个没什么特色的DIV+CSS布局,求指正
- set集合容器
- Linux 内核中的 Device Mapper 机制
- 如何查看及修改oracle编码格式方法
- Visual C#2010学习笔记七之for语句的使用
- Mongodb数据导出工具mongoexport和导入工具mongoimport介绍
- hdu5386 Cover
- node.js forever使用
- hdu 5289 Assignment
- POJ 2121 Inglish-Number Translator
- Java 项目部署到Tomcat服务器