java连接mysql实现图书表和读者表的建立,完成增删改查,要求图书表有外键约束和用户连接起来
时间: 2024-03-07 10:47:01 浏览: 22
好的,我可以给您提供一个大致的实现思路:
1. 首先需要在 MySQL 中创建两个表,分别是图书表和读者表。其中,图书表需要设置外键约束,连接读者表的主键。示例 SQL 语句如下:
```
CREATE TABLE book (
id INT(11) PRIMARY KEY,
title VARCHAR(255),
author VARCHAR(255),
reader_id INT(11),
FOREIGN KEY (reader_id) REFERENCES reader(id)
);
CREATE TABLE reader (
id INT(11) PRIMARY KEY,
name VARCHAR(255),
age INT(11),
gender VARCHAR(255)
);
```
2. 在 Java 中,使用 JDBC 连接 MySQL 数据库,并编写相应的增删改查方法。示例代码如下:
```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BookManager {
private Connection conn;
public BookManager() throws SQLException {
String url = "jdbc:mysql://localhost:3306/db_name";
String user = "username";
String password = "password";
conn = DriverManager.getConnection(url, user, password);
}
public void addBook(Book book) throws SQLException {
String sql = "INSERT INTO book (id, title, author, reader_id) VALUES (?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, book.getId());
pstmt.setString(2, book.getTitle());
pstmt.setString(3, book.getAuthor());
pstmt.setInt(4, book.getReaderId());
pstmt.executeUpdate();
pstmt.close();
}
public void deleteBook(int id) throws SQLException {
String sql = "DELETE FROM book WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.executeUpdate();
pstmt.close();
}
public void updateBook(Book book) throws SQLException {
String sql = "UPDATE book SET title = ?, author = ?, reader_id = ? WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, book.getTitle());
pstmt.setString(2, book.getAuthor());
pstmt.setInt(3, book.getReaderId());
pstmt.setInt(4, book.getId());
pstmt.executeUpdate();
pstmt.close();
}
public Book getBook(int id) throws SQLException {
String sql = "SELECT * FROM book WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();
Book book = null;
if (rs.next()) {
book = new Book();
book.setId(rs.getInt("id"));
book.setTitle(rs.getString("title"));
book.setAuthor(rs.getString("author"));
book.setReaderId(rs.getInt("reader_id"));
}
rs.close();
pstmt.close();
return book;
}
public Reader getReader(int id) throws SQLException {
String sql = "SELECT * FROM reader WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();
Reader reader = null;
if (rs.next()) {
reader = new Reader();
reader.setId(rs.getInt("id"));
reader.setName(rs.getString("name"));
reader.setAge(rs.getInt("age"));
reader.setGender(rs.getString("gender"));
}
rs.close();
pstmt.close();
return reader;
}
}
```
3. 在代码中,Book 和 Reader 分别是表示图书和读者的实体类。示例代码如下:
```
public class Book {
private int id;
private String title;
private String author;
private int readerId;
// 省略 getter 和 setter 方法
}
public class Reader {
private int id;
private String name;
private int age;
private String gender;
// 省略 getter 和 setter 方法
}
```
4. 最后,在应用中调用 BookManager 类的方法即可完成增删改查操作。例如,添加一本图书的代码如下:
```
Book book = new Book();
book.setId(1);
book.setTitle("Java 编程思想");
book.setAuthor("Bruce Eckel");
book.setReaderId(1);
BookManager bookManager = new BookManager();
bookManager.addBook(book);
```
这样就完成了 Java 连接 MySQL 实现图书表和读者表的建立,实现了增删改查,并且图书表设置了外键约束,连接了读者表。