java如何在lend表中插入一条记录的同时在book更新记录
时间: 2024-02-17 18:05:21 浏览: 103
可以使用数据库事务(transaction)来实现同时在lend表中插入一条记录的同时在book表更新记录的操作。具体流程如下:
1. 开启事务(transaction)。
2. 在lend表中插入一条记录。
3. 在book表中更新相应的记录。
4. 提交事务(commit)。
在Java中,使用JDBC(Java Database Connectivity)可以实现对数据库进行操作。以下是一个使用JDBC在lend表中插入一条记录的同时在book表更新记录的示例代码:
```
// 加载JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
// 建立数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
// 开启事务
conn.setAutoCommit(false);
// 在lend表中插入一条记录
PreparedStatement pstmt1 = conn.prepareStatement("INSERT INTO lend (user_id, book_id, lend_date) VALUES (?, ?, ?)");
pstmt1.setInt(1, userId);
pstmt1.setInt(2, bookId);
pstmt1.setDate(3, lendDate);
pstmt1.executeUpdate();
pstmt1.close();
// 在book表中更新相应的记录
PreparedStatement pstmt2 = conn.prepareStatement("UPDATE book SET status = ? WHERE id = ?");
pstmt2.setString(1, "借出");
pstmt2.setInt(2, bookId);
pstmt2.executeUpdate();
pstmt2.close();
// 提交事务
conn.commit();
// 关闭数据库连接
conn.close();
```
在上述代码中,首先通过Class.forName()方法加载JDBC驱动,然后使用DriverManager.getConnection()方法建立与数据库的连接。接着,通过conn.setAutoCommit(false)方法开启事务。在事务中,首先通过PreparedStatement对象向lend表中插入一条记录,然后通过另一个PreparedStatement对象更新book表中的相应记录。最后,通过conn.commit()方法提交事务。在提交事务之前,如果出现了异常,可以通过conn.rollback()方法回滚事务。最后,通过conn.close()方法关闭与数据库的连接。
阅读全文