MySQL网上购药系统
1. 简介
在现代社会中,网上购物已经成为人们的主要购物方式之一。而网上购药也是其中的一项重要服务。为了提供更好的用户体验,需要一个高效可靠的数据库来支持网上购药系统的运行。MySQL作为一种广泛使用的关系型数据库管理系统,可以很好地满足这个需求。
本文将介绍如何使用MySQL来搭建一个网上购药系统,并提供相应的代码示例。
2. 系统设计
数据库设计
在网上购药系统中,常见的数据实体可以包括用户、药品、订单等。下面是一个简化的数据库ER图示例:
erDiagram
USER ||--o{ ORDER : has
USER {
string username
string password
string email
}
ORDER {
int order_id
date order_date
string status
}
ORDER ||--|{ ORDER_ITEM : contains
ORDER_ITEM {
int item_id
int quantity
}
ORDER_ITEM }--|| MEDICINE : includes
MEDICINE {
int medicine_id
string name
decimal price
}
数据库表设计
基于上述数据库设计,我们可以创建相应的表结构。
用户表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
药品表
CREATE TABLE medicines (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
订单表
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
order_date DATE NOT NULL,
status VARCHAR(255) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
订单项表
CREATE TABLE order_items (
id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
medicine_id INT NOT NULL,
quantity INT NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id),
FOREIGN KEY (medicine_id) REFERENCES medicines(id)
);
数据库操作
接下来,我们可以使用MySQL提供的API来实现对数据库的操作。以下是一个简化的Java代码示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class PharmacySystem {
private static final String URL = "jdbc:mysql://localhost:3306/pharmacy_system";
private static final String USERNAME = "root";
private static final String PASSWORD = "password";
public static void main(String[] args) {
Connection connection = null;
try {
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
System.out.println("Connected to the database!");
// 查询所有药品
List<Medicine> medicines = getAllMedicines(connection);
for (Medicine medicine : medicines) {
System.out.println(medicine);
}
// 创建新用户
User user = new User("username", "password", "email");
createUser(connection, user);
// 创建新订单
Order order = new Order(user.getId(), "2022-01-01", "pending");
createOrder(connection, order);
// 添加订单项
OrderItem item1 = new OrderItem(order.getId(), medicines.get(0).getId(), 2);
createOrderItem(connection, item1);
OrderItem item2 = new OrderItem(order.getId(), medicines.get(1).getId(), 3);
createOrderItem(connection, item2);
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
System.out.println("Disconnected from the database!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
private static List<Medicine> getAllMedicines(Connection connection) throws SQLException {
List<Medicine> medicines = new ArrayList<>();
String sql = "SELECT * FROM medicines";
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
double price = resultSet.getDouble("price");
Medicine medicine = new Medicine(id, name, price);
medicines.add(medicine);
}
return medicines;
}
private static void createUser(Connection connection, User user) throws SQLException {
String sql = "INSERT INTO users (username, password, email) VALUES (?,