MySQL存储过程的创建和Java调用存储过程
来源:互联网 发布:金相分析软件报价 编辑:程序博客网 时间:2024/05/16 03:43
一、创建MySQL存储过程示例
#选择数据库
mysql> use test;
#创建示例用表
mysql> create table student(
-> id int primary key auto_increment,
-> name varchar(10)
-> );
#插入测试数据
mysql> insert into student(name) values('Tom');
mysql> insert into student(name) values('Jay');
mysql> insert into student(name) values('Jim');
#更改命令结束符(因为在procedure中经常要用到默认的命令结束符为分号(;) ,
#而创建存储过程的执行中本身有分号,为存储过程的顺利执行,
#所以在创建procedure的时候需要定义新的结束符以说明创建procedure的命令结束)
#这里将结束符号改成美元符号$ $
mysql> delimiter $ $
#创建存储过程p3
#此存储过程的过程名是pro3,该过程包含两个参数,
#一个是输入类型的(以IN标示),参数名是nameid,类型是int,
#一个是输出类型的(以OUT标示),参数名是person_name,类型是varchar(10)
#此存储过程的作用是查询出student表的全部内容,会输出结果集(data set),然后
#再查询表中记录的ID是nameid的字段name,将其输出到第二个输出类型的参数里面(注意:这个查询不会输出结果集)
mysql> create procedure pro3(IN nameid int, OUT person_name varchar(10))
-> begin
-> select * from test.zzm;
-> select zzm.name into person_name from test.zzm where zzm.id = nameid;
-> end
-> $ $
#创建完成,查看数据库中所有已经创建的存储过程
mysql> show procedure status $
#调用存储过程
mysql> call pro3(2,@name) $ $
+----+-------+
| id | name |
+----+-------+
| 1 | Tom |
| 2 | Jay |
| 3 | Jim |
+----+-------+
mysql> select @name $
+-------+
| @name |
+-------+
| Jay |
+-------+
二、在Java程序中调用存储过程的程序示例
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Types;
public class Main {
public static void main(String[] args) {
/* JDBC连接MySQL数据库的参数 */
String driverName = "com.mysql.jdbc.Driver";
String userName = "root";
String userPasswd = "yong";
String dbName = "test";
String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName
+ "&password=" + userPasswd;
Connection connection = null;
CallableStatement stmt = null;
try {
// 加载数据库驱动程序
Class.forName(driverName).newInstance();
// 连接数据库
connection = DriverManager.getConnection(url);
// 调用存储过程,此存储过程有2个参数
stmt = connection.prepareCall("{call pro3(?,?)}");
// 第一个参数是输入的,在此设置第一个参数的值:将第一个参数设置成整数值3
stmt.setInt(1,2);
// 第二个参数是输出的,在此设置第二个参数的输出类型为VARCHAR
stmt.registerOutParameter(2, Types.VARCHAR);
// 执行存储过程
boolean hadResults = stmt.execute();
// 如果有查询语句的话,此执行过程会返回结果集,在此处理结果集里面的东西
System.out.println("Data from table:");
while (hadResults) {
ResultSet rs = stmt.getResultSet();
while(rs.next()){
String id = rs.getString(1);
String name = rs.getString(2);
System.out.println("ID = "+id+"/tName = " + name);
}
hadResults = stmt.getMoreResults();
}
// 获取存储过程的返回值
System.out.println("/nData from procedure:");
String name = stmt.getString(2); // 获得第二个参数,因为第二个参数是输出类型的
System.out.println("Name = " + name);
} catch (Exception e) {
System.out.println(e.toString());
} finally {
try {
stmt.close();
connection.close();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
}
--程序执行结果--
Data from table:
ID = 1 Name = Tom
ID = 2 Name = Jay
ID = 3 Name = Jim
Data from procedure:
Name = Jay
- MySQL存储过程的创建和Java调用存储过程
- mysql 创建存储过程 java程序调用该存储过程
- 创建存储过程和调用存储过程(Mysql)
- 创建存储过程和java调用存储过程
- MYSQL简单存储过程创建和java中的调用
- MySQL存储过程的创建及调用
- MySQL 创建\调用存储过程
- MySQL存储过程及java中存储过程的调用
- java存储过程的创建与调用
- Oralce存储过程的创建和调用
- 存储过程的 创建 和 调用
- 调用MySQL存储过程的Java代码
- java mysql 存储过程的调用
- java调用mysql的存储过程
- Java调用MySQL的存储过程
- Java调用mysql的存储过程
- JAVA调用MYSQL存储过程
- Java调用MySQL存储过程
- sudo出现sudo:must be setuid root问题的解决方法
- UBUNTU PIDGIN支持LYNC,并且支持语音
- Count the Colors+ZOJ+线段树成段更新
- HashSet和TreeSet的区别是什么?
- SVN批量增删
- MySQL存储过程的创建和Java调用存储过程
- Longest valid parentheses
- python学习笔记 - urllib2和cookielib模块心得
- 使用Spring Cache
- jvm字节代码的编译机制
- Linux信号量机制(生产者消费者)
- godaddy无法连接mysql
- 华为Easy IP和NAT Server实现原理
- 2013--2014年总结——拾掇 “点点滴滴回忆”一