DELIMITER $$ CREATE PROCEDURE searchbook (IN a_bookname VARCHAR (20)) BEGIN SELECT `bookno`,`bookname`,`publisher`,`author` FROM `book` WHERE `bookname` LIKE CONCAT ('%',a_bookname,'%') ORDER BY `bookname`; END$$ DELIMITER ;在Java中调用
时间: 2023-07-13 10:12:42 浏览: 106
详解 Mysql中的delimiter定义及作用
好的,你可以按照以下方式在Java中调用该存储过程:
```java
import java.sql.*;
public class SearchBook {
public static void main(String[] args) {
Connection conn = null;
CallableStatement cstmt = null;
ResultSet rs = null;
try {
// 1. 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 2. 建立数据库连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookstore", "root", "password");
// 3. 调用存储过程
String call = "{ call searchbook(?) }";
cstmt = conn.prepareCall(call);
cstmt.setString(1, "某个字");
// 4. 执行存储过程
rs = cstmt.executeQuery();
// 5. 输出结果
while (rs.next()) {
System.out.println("书号:" + rs.getString("bookno") + ",书名:" + rs.getString("bookname") + ",出版社:" + rs.getString("publisher") + ",作者:" + rs.getString("author"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 6. 释放资源
try {
if (rs != null) rs.close();
if (cstmt != null) cstmt.close();
if (conn != null) conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
```
其中,`com.mysql.jdbc.Driver` 是MySQL数据库的驱动,你需要先下载并导入到项目中。`jdbc:mysql://localhost:3306/bookstore` 是连接本地MySQL数据库中的 bookstore 数据库,你需要将其替换成你自己的数据库地址、端口和数据库名;`root` 和 `password` 是数据库的用户名和密码,你需要将其替换成你自己的用户名和密码。`searchbook` 是你的存储过程名,你需要将其替换成你自己的存储过程名。在执行程序前,请确保你已经创建了名为 `searchbook` 的存储过程,并且它接受一个输入参数 `a_bookname`,类型为 `VARCHAR`。在程序中,我们将 `a_bookname` 设置为了 `"某个字"`,你可以根据需要更改它的值。
阅读全文