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 (?,