一、实验目的
1、理解JDBC的工作原理和使用JDBC操作数据库的过程;
2、掌握如何在 Java 程序中使用 JDBC 进行数据库的CRUD操作。
二、实验环境
Windows,IDEA。
三、实验内容
创建一个名为 books 的数据库表,其结构如下:
id INT(主键,自动递增)
title VARCHAR(书名)
author VARCHAR(作者)
price DOUBLE(价格):
对该表完成以下任务:
1、插入数据:
使用 JDBC 插入至少五本书的信息到 books 表。
2、查询数据:
使用 JDBC 查询并打印出所有价格大于50元且书名包含“python”(不区分大小写)的书籍的信息。
3、更新数据:
使用 JDBC 更新其中一本书的价格。
4、删除数据:
使用 JDBC 删除其中一本书。
五、源代码
(1)创建数据库
CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255),
author VARCHAR(255),
price DOUBLE
);
(2)写入数据
package com.wzh;
import java.sql.*;
public class BookDatabaseOperations {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/books?useUnicode=true&characterEncoding=utf-8";
private static final String USER = "root";
private static final String PASSWORD = "root";
public static void main(String[] args) {
insertData();
queryData();
updateData();
deleteData();
}
private static void insertData() {
try (Connection connection = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
Statement statement = connection.createStatement()) {
// 插入数据
String insertQuery = "INSERT INTO books (title, author, price) VALUES "
+ "('Python', 'l1', 60.0), "
+ "('java', 'l2', 70.0), "
+ "('sql', 'l3', 45.0), "
+ "('111', '222', 55.0), "
+ "('3', '4', 60.0)";
statement.executeUpdate(insertQuery);
System.out.println("Data inserted successfully.");
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void queryData() {
try (Connection connection = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
Statement statement = connection.createStatement()) {
// 查询数据
String query = "SELECT * FROM books WHERE price > 50 AND title LIKE '%python%'";
ResultSet resultSet = statement.executeQuery(query);
System.out.println("Books with price > 50 and title contains 'python':");
while (resultSet.next()) {
int id = resultSet.getInt("id");
String title = resultSet.getString("title");
String author = resultSet.getString("author");
double price = resultSet.getDouble("price");
System.out.println("ID: " + id + ", Title: " + title + ", Author: " + author + ", Price: " + price);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void updateData() {
try (Connection connection = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
Statement statement = connection.createStatement()) {
// 更新数据
String updateQuery = "UPDATE books SET price = 65.0 WHERE title = '巴黎圣母院'";
int rowsAffected = statement.executeUpdate(updateQuery);
if (rowsAffected > 0) {
System.out.println("success");
} else {
System.out.println("fail");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void deleteData() {
try (Connection connection = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
Statement statement = connection.createStatement()) {
// 删除数据
String deleteQuery = "DELETE FROM books WHERE title = 'Java Book'";
int rowsAffected = statement.executeUpdate(deleteQuery);
if (rowsAffected > 0) {
System.out.println("success");
} else {
System.out.println("fail");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在代码中使用JDBC时,需要确保已经加载数据库驱动。你的代码中没有包括加载MySQL驱动的部分。在执行数据库操作之前,应该添加以下代码:
Class.forName("com.mysql.cj.jdbc.Driver");