用JDBC调用存储过程实现图书管理系统业务
时间: 2023-07-08 13:22:01 浏览: 107
好的,我会尽力回答你的问题。首先,实现图书管理系统业务需要设计好数据库并创建相关的存储过程。假设我们已经创建好了以下存储过程:
1. 添加图书信息的存储过程:add_book(book_id, book_name, author, publish, price, stock)
2. 修改图书信息的存储过程:update_book(book_id, book_name, author, publish, price, stock)
3. 删除图书信息的存储过程:delete_book(book_id)
4. 查询所有图书信息的存储过程:select_all_books()
5. 根据图书名称查询图书信息的存储过程:select_book_by_name(book_name)
接下来,我们可以使用JDBC连接数据库并调用存储过程来实现图书管理系统的相关业务。下面是一个简单的示例代码:
```java
import java.sql.*;
public class BookManagementSystem {
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/bookdb";
private static final String USER = "root";
private static final String PASS = "password";
public static void main(String[] args) {
Connection conn = null;
CallableStatement stmt = null;
try {
// 注册 JDBC 驱动器
Class.forName(JDBC_DRIVER);
// 打开连接
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 调用添加图书信息的存储过程
stmt = conn.prepareCall("{call add_book(?, ?, ?, ?, ?, ?)}");
stmt.setInt(1, 1001);
stmt.setString(2, "Java Programming");
stmt.setString(3, "John Smith");
stmt.setString(4, "O'Reilly Media");
stmt.setDouble(5, 39.99);
stmt.setInt(6, 50);
stmt.execute();
// 调用修改图书信息的存储过程
stmt = conn.prepareCall("{call update_book(?, ?, ?, ?, ?, ?)}");
stmt.setInt(1, 1001);
stmt.setString(2, "Java Programming (2nd Edition)");
stmt.setString(3, "John Smith");
stmt.setString(4, "O'Reilly Media");
stmt.setDouble(5, 49.99);
stmt.setInt(6, 100);
stmt.execute();
// 调用删除图书信息的存储过程
stmt = conn.prepareCall("{call delete_book(?)}");
stmt.setInt(1, 1001);
stmt.execute();
// 调用查询所有图书信息的存储过程
stmt = conn.prepareCall("{call select_all_books()}");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt("book_id") + "\t" + rs.getString("book_name") + "\t" + rs.getString("author") + "\t" + rs.getString("publish") + "\t" + rs.getDouble("price") + "\t" + rs.getInt("stock"));
}
// 调用根据图书名称查询图书信息的存储过程
stmt = conn.prepareCall("{call select_book_by_name(?)}");
stmt.setString(1, "Java Programming");
rs = stmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt("book_id") + "\t" + rs.getString("book_name") + "\t" + rs.getString("author") + "\t" + rs.getString("publish") + "\t" + rs.getDouble("price") + "\t" + rs.getInt("stock"));
}
// 关闭结果集、语句和连接
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
// 处理 Class.forName 错误
e.printStackTrace();
} finally {
// 关闭资源
try {
if (stmt != null) stmt.close();
} catch (SQLException se2) {
}
try {
if (conn != null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
}
```
上面的代码演示了如何使用JDBC调用存储过程来实现图书管理系统的业务。当然,这只是一个简单的示例,实际业务可能更加复杂。需要根据实际情况进行设计和实现。
阅读全文