链接数据库java图书馆管理系统代码实战
时间: 2023-08-10 18:03:48 浏览: 56
连接数据库是Java图书馆管理系统的重要部分之一,下面是一个简单的代码实战示例:
首先,在Java项目中添加相关的数据库驱动jar包,这里以MySQL为例:
```java
import java.sql.*;
public class LibrarySystem {
// 数据库连接信息
private static final String URL = "jdbc:mysql://localhost:3306/library";
private static final String USER = "root";
private static final String PASSWORD = "123456";
// 数据库连接对象
private Connection conn;
// 构造函数中进行数据库连接
public LibrarySystem() {
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
// 关闭数据库连接
public void close() {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 查询图书信息
public void searchBook(String bookName) {
try {
// 创建PreparedStatement对象
PreparedStatement ps = conn.prepareStatement("SELECT * FROM book WHERE name = ?");
// 设置参数
ps.setString(1, bookName);
// 执行查询
ResultSet rs = ps.executeQuery();
// 遍历结果集
while (rs.next()) {
System.out.println("书名:" + rs.getString("name"));
System.out.println("作者:" + rs.getString("author"));
System.out.println("价格:" + rs.getDouble("price"));
}
rs.close();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 借阅图书
public void borrowBook(String bookName, String userName) {
try {
// 开启事务
conn.setAutoCommit(false);
// 查询图书信息
PreparedStatement ps1 = conn.prepareStatement("SELECT * FROM book WHERE name = ?");
ps1.setString(1, bookName);
ResultSet rs1 = ps1.executeQuery();
// 判断图书是否存在
if (!rs1.next()) {
System.out.println("图书不存在!");
rs1.close();
ps1.close();
return;
}
// 判断图书是否已借出
if (rs1.getInt("status") == 1) {
System.out.println("图书已借出!");
rs1.close();
ps1.close();
return;
}
// 查询用户信息
PreparedStatement ps2 = conn.prepareStatement("SELECT * FROM user WHERE name = ?");
ps2.setString(1, userName);
ResultSet rs2 = ps2.executeQuery();
// 判断用户是否存在
if (!rs2.next()) {
System.out.println("用户不存在!");
rs2.close();
ps2.close();
return;
}
// 更新图书状态
PreparedStatement ps3 = conn.prepareStatement("UPDATE book SET status = 1 WHERE name = ?");
ps3.setString(1, bookName);
ps3.executeUpdate();
// 插入借阅记录
PreparedStatement ps4 = conn.prepareStatement("INSERT INTO borrow(book_name, user_name, borrow_time) VALUES (?, ?, ?)");
ps4.setString(1, bookName);
ps4.setString(2, userName);
ps4.setTimestamp(3, new Timestamp(System.currentTimeMillis()));
ps4.executeUpdate();
// 提交事务
conn.commit();
System.out.println("借阅成功!");
rs1.close();
ps1.close();
rs2.close();
ps2.close();
ps3.close();
ps4.close();
} catch (SQLException e) {
e.printStackTrace();
try {
// 回滚事务
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
public static void main(String[] args) {
LibrarySystem ls = new LibrarySystem();
ls.searchBook("Java编程思想");
ls.borrowBook("Java编程思想", "张三");
ls.close();
}
}
```
上面的代码演示了如何连接MySQL数据库,并实现查询图书信息和借阅图书的功能。其中,使用了PreparedStatement对象来进行SQL语句的预编译和参数绑定,以避免SQL注入攻击;同时,还使用了事务来保证数据的一致性和完整性。最后,需要注意在程序结束时关闭数据库连接,以释放资源。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)