用Java创建一个名为Books的数据库,并在其中建立一个名为book message的表,宇段包括书名、作者、出版社、出版时问和价格。编写一个应用程序,用预处理方式在该数据库中实现增加、删除和修改数据以及查询的基本功能。
时间: 2024-02-21 18:59:23 浏览: 68
好的,我会按照您的要求进行回答。首先,您可以使用以下代码来创建一个名为Books的数据库:
```
CREATE DATABASE Books;
```
然后,您可以在该数据库中创建一个名为book_message的表,它包括书名、作者、出版社、出版时间和价格等字段:
```
CREATE TABLE book_message (
id INT NOT NULL AUTO_INCREMENT,
book_name VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
publisher VARCHAR(50) NOT NULL,
publish_date DATE NOT NULL,
price DECIMAL(10,2) NOT NULL,
PRIMARY KEY (id)
);
```
接下来,您可以使用Java中的JDBC API来编写一个应用程序,以实现增加、删除、修改和查询数据的基本功能。以下是一个使用预处理方式的示例代码:
```
import java.sql.*;
public class BookManager {
private static final String URL = "jdbc:mysql://localhost/Books";
private static final String USER = "root";
private static final String PASSWORD = "password";
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
// 增加数据
String insertSql = "INSERT INTO book_message (book_name, author, publisher, publish_date, price) VALUES (?, ?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(insertSql);
pstmt.setString(1, "Java编程思想");
pstmt.setString(2, "Bruce Eckel");
pstmt.setString(3, "机械工业出版社");
pstmt.setDate(4, Date.valueOf("2006-01-01"));
pstmt.setDouble(5, 79.00);
pstmt.executeUpdate();
// 删除数据
String deleteSql = "DELETE FROM book_message WHERE id = ?";
pstmt = conn.prepareStatement(deleteSql);
pstmt.setInt(1, 1);
pstmt.executeUpdate();
// 修改数据
String updateSql = "UPDATE book_message SET price = ? WHERE id = ?";
pstmt = conn.prepareStatement(updateSql);
pstmt.setDouble(1, 89.00);
pstmt.setInt(2, 2);
pstmt.executeUpdate();
// 查询数据
String querySql = "SELECT * FROM book_message";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(querySql);
while (rs.next()) {
int id = rs.getInt("id");
String bookName = rs.getString("book_name");
String author = rs.getString("author");
String publisher = rs.getString("publisher");
Date publishDate = rs.getDate("publish_date");
double price = rs.getDouble("price");
System.out.println(id + "\t" + bookName + "\t" + author + "\t" + publisher + "\t" + publishDate + "\t" + price);
}
rs.close();
pstmt.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们使用了PreparedStatement来执行增加、删除和修改数据的操作,它可以有效地防止SQL注入攻击。同时,我们也使用了Statement来执行查询数据的操作,并使用ResultSet来获取返回的结果集。请注意,上面的代码只是一个示例,您可以根据实际需求进行修改。
阅读全文