java—数据存储过程 (54)
存储过程:procedure:就是一段可执行程序。这个程序运行在数据中。
Begin = {
End = }
If
Else
也可以接收参数。
1 定义一个procedure:
CREATE PROCEDURE proc1()
BEGIN ――{
SELECT * FROM users;
END // ―― } DELIMITER ; CALL proc1();
2 定义一个接收参数的:
DELIMITER $$
CREATE PROCEDURE proc2(IN _id VARCHAR(),IN _nm VARCHAR())
BEGIN
INSERT INTO users(id,NAME) VALUES(_id,_nm);
END $$ CALL proc2('U003','Rose');
3 定义一个返回类型的参数:
DELIMITER $$
CREATE PROCEDURE proc3(IN _id VARCHAR(),IN _nm VARCHAR(),OUT _size INT)
BEGIN
INSERT INTO users(id,NAME) VALUES(_id,_nm);
SELECT COUNT() INTO _size FROM users;
IF(_size=) THEN
INSERT INTO users VALUES('U0000','ddd','ddddd');
END IF;
END $$ CALL proc3('U002882','Rose',@wj);
SELECT @wj;
在Java代码中调用Procedure
package cn.hx.demo;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Types;
import org.junit.Test;
import cn.itcast.utils.DataSourceUtils;
public class ProceDemo {
@Test
public void proc1() throws Exception{
//dbutils不提供调用存储过程的能力
Connection con = DataSourceUtils.getDatasSource().getConnection();
//获取调用过程的对象
CallableStatement cs =
con.prepareCall("{call proc1()}");
//执行
boolean boo = cs.execute();//如果返回true,指最后一句执行的是select语句
if(boo){
ResultSet rs = cs.getResultSet();
while(rs.next()){
System.err.println(rs.getString("name"));
}
}
con.close();
}
@Test
public void proc2() throws Exception{
Connection con = DataSourceUtils.getDatasSource().getConnection();
//获取调用过程的对象
CallableStatement cs =
con.prepareCall("{call proc2(?,?)}");
cs.setString(1,"UAAA");
cs.setString(2, "11");
boolean boo = cs.execute();
System.err.println(boo);
con.close();
}
@Test
public void proc3() throws Exception{
Connection con = DataSourceUtils.getDatasSource().getConnection();
//获取调用过程的对象
CallableStatement cs =
con.prepareCall("{call proc5(?,?,?)}");
cs.setString(1,"UBDDB");
cs.setString(2, "张三");
cs.registerOutParameter(3,Types.INTEGER);//--int,
boolean boo = cs.execute();
System.err.println(">>:"+boo);//true
//从call中获取返回的值
int size = cs.getInt(3);
System.err.println("行数:"+size);
if(boo){
ResultSet rs= cs.getResultSet();
rs.next();
int ss = rs.getInt(1);
System.err.println("sss:"+ss);
}
con.close();
}
@Test
public void proc6() throws Exception{
Connection con = DataSourceUtils.getDatasSource().getConnection();
//获取调用过程的对象
CallableStatement cs =
con.prepareCall("{call proc6(?,?,?,?)}");
cs.setString(1,"UBafadsB");
cs.setString(2, "张三");
cs.registerOutParameter(3,Types.INTEGER);//--int,
cs.registerOutParameter(4, Types.INTEGER);
boolean boo = cs.execute();
System.err.println(">>:"+boo);//faluse
//从call中获取返回的值
int size = cs.getInt(3);
int _s = cs.getInt(4);
System.err.println("行数:"+size+","+_s);
con.close();
}
}
java—数据存储过程 (54)的更多相关文章
- Java对存储过程的调用方法 --转载
一.Java如何实现对存储过程的调用: A:不带输出参数的 create procedure getsum <--此处为参数--> as declare @sum int<--定义变 ...
- Java对存储过程的调用方法
本文将介绍Java怎样实现对存数过程的调用方法,作者用了几个样例进行了具体的说明,简单明了,很适合刚開始学习的人. 一.Java怎样实现对存储过程的调用: A:不带输出參数的 create proce ...
- Java 数据持久化系列之JDBC
前段时间小冰在工作中遇到了一系列关于数据持久化的问题,在排查问题时发现自己对 Java 后端的数据持久化框架的原理都不太了解,只有不断试错,因此走了很多弯路.于是下定决心,集中精力学习了持久化相关框架 ...
- JAVA对存储过程的调用方法(本文源于网络)
博客分类: java java存储过程sql 一:Java如何实现对存储过程的调用: A:不带输出参数的 ---------------不带输出参数的-------------------- ...
- java调用存储过程(stored procedures)的HelloWorld例子
1.java调用存储过程(stored procedures)的HelloWorld程序 有点数据 库基础的人都知道.存储过程(stored procedures)和java没什么关系.它是一段纯粹的 ...
- Java数据持久层
一.前言 1.持久层 Java数据持久层,其本身是为了实现与数据源进行数据交互的存在,其目的是通过分层架构风格,进行应用&数据的解耦. 我从整体角度,依次阐述JDBC.Mybatis.Myba ...
- JSONObject.fromObject(map)(JSON与JAVA数据的转换)
JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么 ...
- 关于JAVA数据储存
关于JAVA数据储存: 在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register) 这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有限,所以 ...
- Java数据类型和MySql数据类型对应一览
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N ...
随机推荐
- 关于hibernate4.3版本之后org.hibernate.service.ServiceRegistryBuilder被弃用
之前一直都是使用hibernate4.2.21的我,有一天突然没有使用本地的jar包而是让IDEA自动下载最新版本的hibernate5.2.2之后,发现有几个经常使用的方法报错了. -这真是让我惊了 ...
- libcurl 调用curl_easy_getinfo( ) 返回错误码对照
//执行设置好的操作 res = curl_easy_perform(easy_handle); //获取HTTP错误码 ; curl_easy_getinfo(easy_handle, CURLIN ...
- gzip是一种数据格式,deflate是一种压缩算法
gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分:deflate是一种压缩算法,是huffman编码的一种加强. deflate与gzip解压的代码几乎相同,可以合成一块代码 ...
- apache ant 修改java版本 方法之一
通常apache ant是和eclipse软件绑定在一起的.尝试了一些方法不行,想到了一个笨的方法,分享一下: ①打开ant 编译时的配置界面 ②.切换到classPath选项卡,选择ant home ...
- Golang开发环境搭建-Vim篇
一.一个干净的环境 找个干净的基础环境,方便确认每个搭建步骤后的效果: Ubuntu 14.04 x86_64 vim version 7.4.52 go version go1.4beta1 lin ...
- Linux System V Semaphore semget多进程同时创建缺陷解决方法
System V Semaphore的创建过程缺陷是创建与赋初值由两个函数完成,这会导致两个进程同时创建的话会出现竞争和不一致状态,即使是使用了IPC-EXCL标记. 示例: oflag = IPC- ...
- Java程序设计11——GUI设计与事件处理A
1.GUI设计 Java使用AWT和Swing类完成图形用户界面编程,AWT全称是Abstract Window Toolkit,即抽象窗口工具集,它是Sun最早提供的GUI库,只是这个库功能比较有限 ...
- DataStage 二、InfoSphere Information Server进程的启动和停止
DataStage序列文章 DataStage 一.安装 1 关于进程需要了解的基础知识 名称 说明 ASB代理进程 通信代理程序,它的作用是协助层与层之间的通信,默认端口是31531,它以后台进程的 ...
- FZU 1977 Pandora adventure (DP)
题意:给定一个图,X表示不能走,O表示必须要走,*表示可走可不走,问你多少种走的法,使得形成一个回路. 析: 代码如下: #pragma comment(linker, "/STACK:10 ...
- python使用git进行版本控制1
首先,选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit pwd命令用于显示当前目录. 如果 ...