JDBC数据库编程图书管理系统,根据需求,选择合适的关系数据库,设计和实现数据库: 数据库的设计 数据库的实现 驱动程序装载 数据库连接 数据库数据的存取 l数据库数据的处理,写出实验过程和结果
时间: 2024-03-08 12:45:02 浏览: 77
图书管理系统数据库设计与实现(包括需求分析,数据库设计,数据表、视图、存储过程等)
5星 · 资源好评率100%
好的,我可以为您提供一个简单的JDBC数据库编程图书管理系统实验过程和结果。
1. 数据库的设计
在本次实验中,我们选择MySQL作为关系数据库,设计了三个表:图书表、读者表、借阅记录表。
图书表:
| 字段名 | 数据类型 | 长度 | 主键 | 备注 |
| :----: | :------: | :--: | :--: | :--: |
| id | int | 11 | 是 | 图书编号 |
| book_name | varchar | 255 | 否 | 图书名称 |
| author | varchar | 255 | 否 | 作者 |
| publish_date | date | - | 否 | 出版日期 |
| price | double | - | 否 | 图书价格 |
读者表:
| 字段名 | 数据类型 | 长度 | 主键 | 备注 |
| :----: | :------: | :--: | :--: | :--: |
| id | int | 11 | 是 | 读者编号 |
| reader_name | varchar | 255 | 否 | 读者姓名 |
| age | int | 11 | 否 | 读者年龄 |
| sex | varchar | 255 | 否 | 读者性别 |
| phone | varchar | 255 | 否 | 读者联系方式 |
借阅记录表:
| 字段名 | 数据类型 | 长度 | 主键 | 外键 | 备注 |
| :----: | :------: | :--: | :--: | :--: | :--: |
| id | int | 11 | 是 | - | 借阅编号 |
| book_id | int | 11 | 否 | 是 | 图书编号 |
| reader_id | int | 11 | 否 | 是 | 读者编号 |
| borrow_date | date | - | 否 | - | 借阅日期 |
| return_date | date | - | 否 | - | 归还日期 |
2. 数据库的实现
在本次实验中,我们使用了MySQL作为关系数据库,并通过MySQL Workbench进行数据库的创建和表的设计。同时,我们使用了Java语言作为编程语言,并使用了JDBC驱动程序连接数据库。
3. 驱动程序装载
在使用JDBC连接数据库之前,需要加载驱动程序。我们可以使用Class.forName()方法来加载MySQL的JDBC驱动程序。
```java
Class.forName("com.mysql.jdbc.Driver");
```
4. 数据库连接
在加载了驱动程序之后,我们就可以连接数据库了。我们使用DriverManager.getConnection()方法来获取数据库连接对象。
```java
String url = "jdbc:mysql://localhost:3306/book_manager";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);
```
其中,url表示数据库的连接信息,包括数据库的IP地址、端口号、数据库名等;username和password则表示连接数据库的用户名和密码。
5. 数据库数据的存取
在连接数据库之后,我们就可以进行数据的存取操作了。我们使用PreparedStatement对象执行SQL语句,并使用ResultSet对象封装查询结果。
```java
// 查询图书信息
String sql = "SELECT * FROM book";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String bookName = rs.getString("book_name");
String author = rs.getString("author");
Date publishDate = rs.getDate("publish_date");
double price = rs.getDouble("price");
// 处理查询结果
}
```
在进行数据的插入、更新、删除等操作时,我们可以使用PreparedStatement对象执行相应的SQL语句,并调用executeUpdate()方法来执行操作。
```java
// 插入图书信息
String sql = "INSERT INTO book (book_name, author, publish_date, price) VALUES (?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, bookName);
pstmt.setString(2, author);
pstmt.setDate(3, publishDate);
pstmt.setDouble(4, price);
int result = pstmt.executeUpdate();
if (result > 0) {
// 插入成功
}
```
6. 数据库数据的处理
在实际开发中,我们需要对数据库数据进行处理,例如对数据进行排序、分页、过滤等操作。在本次实验中,我们使用了MySQL的一些函数和语法来实现数据的处理。
例如,我们可以使用ORDER BY语句对查询结果进行排序:
```java
// 查询图书信息,并按图书价格从低到高排序
String sql = "SELECT * FROM book ORDER BY price ASC";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
// 处理查询结果
}
```
我们也可以使用LIMIT语句实现数据的分页:
```java
// 查询图书信息,并显示第2页的数据
int pageSize = 10; // 每页显示的记录数
int pageNum = 2; // 当前页数
int start = (pageNum - 1) * pageSize; // 查询起始位置
String sql = "SELECT * FROM book LIMIT ?, ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, start);
pstmt.setInt(2, pageSize);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
// 处理查询结果
}
```
希望上述实验过程和结果能够对您有所帮助!
阅读全文