Java调用MySQL存储过程
Java调用MySQL的存储过程,需要用JDBC连接,环境eclipse
首先查看MySQL中的数据库的存储过程,接着编写代码调用
mysql> show procedure status;
+------+-------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+------+-------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| book | findAllBook | PROCEDURE | root@localhost | 2016-09-04 11:13:31 | 2016-09-04 11:13:31 | DEFINER | | gbk | gbk_chinese_ci | utf8_general_ci |
| book | pro_test | PROCEDURE | root@localhost | 2016-11-13 08:27:17 | 2016-11-13 08:27:17 | DEFINER | | gbk | gbk_chinese_ci | utf8_general_ci |
| book | pro_user | PROCEDURE | root@localhost | 2016-11-13 08:44:34 | 2016-11-13 08:44:34 | DEFINER | | gbk | gbk_chinese_ci | utf8_general_ci |
+------+-------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
3 rows in set (0.01 sec) mysql> show create procedure findAllBook;
+-------------+------------------------+---------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Procedure | sql_mode | Create Procedure | character_set_client | collation_connection | Database Collation |
+-------------+------------------------+---------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| findAllBook | NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` PROCEDURE `findAllBook`()
begin
select * from tb_books;
end | gbk | gbk_chinese_ci | utf8_general_ci |
+-------------+------------------------+---------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)
1.工程目录结构

2.Book.java
package com.scd.book;
public class Book {
private String name; //图书名称
private double price; //价格
private int bookCount; //数量
private String author; //作者
public String getName()
{
//System.out.println(name);
return name;
}
public void setName(String name)
{
this.name = name;
}
public double getPrice()
{
return price;
}
public void setPrice(double price)
{
this.price = price;
}
public int getBookCount()
{
return bookCount;
}
public void setBookCount(int bookCount)
{
this.bookCount = bookCount;
}
public String getAuthor()
{
return author;
}
public void setAuthor(String author)
{
//System.out.println(author);
this.author = author;
}
}
2.FindBook.java
package com.scd.book; import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; public class FindBook {
/**
* 获取数据库连接
* @return Connection对象
*/
public Connection getConnection()
{
Connection conn = null; //数据库连接
try
{
Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动,注册到驱动管理器
/*数据库链接地址*/
String url = "jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF-8";
String username = "root";
String password = "123456";
/*创建Connection链接*/
conn = DriverManager.getConnection(url, username, password); }
catch (ClassNotFoundException e){ e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn; //返回数据库连接 }
/**
* 通过存储过程查询数据
* @return List<Book>
*/
public List<Book> findAll()
{
List <Book> list = new ArrayList<Book>(); //实例化List对象
Connection conn = getConnection(); //创建数据库连接
try
{
//调用存储过程
CallableStatement cs = conn.prepareCall("{call findAllBook()}");
ResultSet rs = cs.executeQuery(); //执行查询操作,并获取结果集
while(rs.next())
{
Book book = new Book(); //实例化Book对象
book.setName(rs.getString("name")); //对name属性赋值
book.setPrice(rs.getDouble("price")); //对price属性赋值
book.setBookCount(rs.getInt("bookCount")); //对bookCount属性赋值
book.setAuthor(rs.getString("author")); //对author属性赋值
list.add(book);
} }catch(Exception e)
{
e.printStackTrace();
}
return list; //返回list
}
/**
* 主函数 调用存储过程(测试使用)
* @param args
*/
public static void main(String[] args)
{
FindBook fb = new FindBook();
//System.out.println(fb.findAll());
for (Book book : fb.findAll())
{
System.out.print(book.getName() + "--" + book.getPrice() + "--");
System.out.print(book.getBookCount() + "--" + book.getAuthor());
System.out.println();
}
}
}
3.右键 Run As --> Java Application, 控制台输出

4.执行存储过程中的 sql语句
mysql> select * from tb_books;
+------------------+-------+-----------+----------+
| name | price | bookCount | author |
+------------------+-------+-----------+----------+
| Java丛入门到精通 | 56.78 | 13 | Mr. Sun |
| 数据结构 | 67.3 | 8962 | Mr. Sun |
| 编译原理 | 78.66 | 5767 | Mr. Sun |
| 数据结构 | 67.42 | 775 | Mr.Cheng |
+------------------+-------+-----------+----------+
4 rows in set (0.00 sec)
mysql> call findAllBook();
+------------------+-------+-----------+----------+
| name | price | bookCount | author |
+------------------+-------+-----------+----------+
| Java丛入门到精通 | 56.78 | 13 | Mr. Sun |
| 数据结构 | 67.3 | 8962 | Mr. Sun |
| 编译原理 | 78.66 | 5767 | Mr. Sun |
| 数据结构 | 67.42 | 775 | Mr.Cheng |
+------------------+-------+-----------+----------+
4 rows in set (0.00 sec)
Java调用MySQL存储过程的更多相关文章
- JAVA 调用mysql存储过程
public class Test { //连接mysql数据库 public static final String DRIVER_CLASS = "com.mysql.jdbc.Driv ...
- spring mybatis 3.2调用mysql存储过程返回多结果集(完整、亲测、可用)
最近,有个开发提了个需求,希望中间件支持调用mysql存储过程时支持多结果集返回,因为某些原因我们使用了不少的存储过程,很多复杂的逻辑目前来看交互非常的多,所以从当前的现状来说,这个需求还是蛮合理的. ...
- Java调用MySql数据库函数
Java调用MySql数据库函数 /** * 调用mysql的自定义函数 * */ private void test() { logger.info("show task start &q ...
- java调用mysql服务做备份与恢复
首先添加mysql的bin到环境变量,这样可以简写部分命令,并且做到不依赖系统mysql的具体安装路径. 重启计算机可以让添加的环境变量在java代码中调用时生效.(cmd中生效但java中调用没有生 ...
- PHP调用MYSQL存储过程实例
PHP调用MYSQL存储过程实例 标签: mysql存储phpsqlquerycmd 2010-09-26 11:10 11552人阅读 评论(3) 收藏 举报 实例一:无参的存储过程$conn = ...
- 24、jQuery常用AJAX-API/Java调用MySQL / Oracle过程与函数
1)掌握jQuery常用AJAX-API 2)掌握Java调用MySQL / Oracle过程与函数 一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取 ...
- 调用MYSQL存储过程实例
PHP调用MYSQL存储过程实例 http://blog.csdn.net/ewing333/article/details/5906887 http://www.cnblogs.com/kkchen ...
- Java调用oracle存储过程通过游标返回临时表数据
注:本文来源于 < Java调用oracle存储过程通过游标返回临时表数据 > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...
- Golang 用go-sql-driver 调用MySQL存储过程时的问题排查
今天在用go-sql-driver做MySQL driver调用MySQL的存储过程时遇到一个罕见的报错.本文对这个错误及其解做一个简单的总结. 1 问题描述 按照go中sql包提供的接口,应用层代码 ...
随机推荐
- Python 集合(set)使用
1.python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差 ...
- [简历] JAVA 软件工程师
首先,一份好的简历不光说明事实,更通过FAB模式来增强其说服力. Feature:是什么 Advantage:比别人好在哪些地方 Benefit:如果雇佣你,招聘方会得到什么好处 其次,写简历和写议论 ...
- C++ 11 笔记 (五) : std::thread
这真是一个巨大的话题.我猜记录完善绝B需要一本书的容量. 所以..我只是略有了解,等以后用的深入了再慢慢补充吧. C++写多线程真是一个痛苦的事情,当初用过C语言的CreateThread,见过boo ...
- 一周一话题之三(Windows服务、批处理项目实战)
-->目录导航 一. Windows服务 1. windows service介绍 2. 使用步骤 3. 项目实例--数据上传下载服务 二. 批处理运用 1. 批处理介绍 2. 基本语法 3. ...
- 李洪强iOS开发Swift篇—09_属性
李洪强iOS开发Swift篇—09_属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要 ...
- POP3、SMTP、IMAP和Exchange的区别在哪里?
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:永遇乐链接:http://www.zhihu.com/question/24605584/answer/29039357来源: ...
- 只看Delphi自带的WnAPI帮助似乎不够
比如,MessageBox在Delphi自带帮助的参数说明中,对其第四个参数的MB_类型说明只有最常见的6种类型,这么多年搞得我天经地义的以为MessageBox就是这么简单.今天看了一位前辈写的老代 ...
- Android开源项目发现---Layout 篇(持续更新)
1. achartengine 强大的图标绘制工具 支持折线图.面积图.散点图.时间图.柱状图.条图.饼图.气泡图.圆环图.范围(高至低)条形图.拨号图/表.立方线图及各种图的结合 项目地址:http ...
- 转:三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)
http://blog.csdn.net/liujun13579/article/details/7772215 边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH ...
- TeeChart的最小步长和最大步长
/// <summary> /// 坐标轴的最大步长 /// </summary> public double MajorStep { get { return axis.Ca ...