Java调用MySQL存储过程:CallableStatement实例
版权申诉
191 浏览量
更新于2024-08-08
收藏 16KB DOCX 举报
"这篇文档介绍了如何在Java中使用CallableStatement接口来调用MySQL数据库中的存储过程,包括无参数、带参数以及带返回值的存储过程的创建与调用方法。"
CallableStatement是Java SQL API中用于执行存储过程的接口,它是PreparedStatement的一个子类。在Java应用程序中,CallableStatement提供了调用数据库存储过程的功能,使得开发者可以方便地与数据库进行交互。以下将详细介绍CallableStatement的使用方法以及如何与存储过程结合。
1. 存储过程的创建
- 空参存储过程:`p1()`,用于插入两条记录并查询所有数据。
- 带参存储过程:`p2(IN nm VARCHAR(10))`,接收一个字符串参数,用于插入一条记录并查询所有数据。
- 带参且带返回值的存储过程:`p3(IN nm VARCHAR(10), OUT con INT)`,接收一个字符串参数,插入一条记录,并将NAME字段的数量作为返回值。
2. 存储过程的调用(MySQL)
- 在MySQL中,调用存储过程使用`CALL`语句,分别对应上述三种情况:
- `CALL p1();`
- `CALL p2('带参');`
- `CALL p3('有返回值', @con);`,然后通过`SELECT @con;`获取返回值。
3. Java中的CallableStatement调用
- 首先,需要通过DBUtil获取数据库连接(Connection)。
- 使用Connection的`prepareCall`方法创建CallableStatement对象,传入存储过程的SQL语句,格式为`{call procedure_name(parameters)}`。
- 对于带参数的存储过程,使用CallableStatement的`registerOutParameter`方法注册输出参数,指定其位置索引和类型。
- 设置输入参数,调用`setXXX`方法,根据参数类型设置(如`setString`, `setInt`等)。
- 执行存储过程,调用`execute`方法。
- 获取输出参数,调用`getXXX`方法,如`getString`, `getInt`等。
- 处理结果集(ResultSet),如果存储过程有返回结果,则通过CallableStatement的`getResultSet`方法获取。
- 最后,记得关闭CallableStatement和Connection。
以下是一个Java代码示例,演示了如何调用带有输入参数的存储过程`p2`:
```java
@Test
public void test2() throws Exception {
Connection conn = DBUtil.getConnection();
CallableStatement cs = conn.prepareCall("{call p2(?) }");
cs.setString(1, "Java测试"); // 设置输入参数
cs.execute(); // 执行存储过程
ResultSet rs = cs.getResultSet(); // 获取结果集
while (rs.next()) {
System.out.println(rs.getString("NAME")); // 打印结果
}
rs.close();
cs.close();
conn.close();
}
```
4. 带返回值的存储过程调用
- 调用`p3`时,首先需要注册输出参数,例如`cs.registerOutParameter(2, Types.INTEGER);`,这里2代表第二个参数,Types.INTEGER是JDBC中的常量,表示INT类型。
- 执行存储过程后,通过`cs.getInt(2);`获取返回值。
CallableStatement使得Java应用程序能够灵活地执行数据库存储过程,提高数据库操作的效率。在实际项目中,可以根据需求创建和调用各种复杂的存储过程,处理更复杂的业务逻辑。
2011-11-10 上传
2009-05-10 上传
2022-07-05 上传
2024-06-28 上传
2021-12-17 上传
2022-01-08 上传
2021-12-21 上传
2021-12-17 上传
2008-10-27 上传
小兔子平安
- 粉丝: 251
- 资源: 1940
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载