首页 > 数据库 >【MySQL】实战篇—应用开发:使用MySQL与编程语言(如Python、Java、PHP等)进行交互

【MySQL】实战篇—应用开发:使用MySQL与编程语言(如Python、Java、PHP等)进行交互

时间:2024-10-27 20:18:32浏览次数:8  
标签:实战篇 Java 数据库 书籍 插入 connection MySQL 连接

MySQL是存储和管理数据的强大工具,而编程语言(如Python、Java、PHP等)则用于开发应用程序和处理业务逻辑。将这两者结合起来,可以实现数据的存储、查询、更新和管理,进而构建功能强大的应用程序。

2. 重要性和实际应用场景

在软件开发中,数据库与编程语言的交互至关重要,以下是一些常见的应用场景:

  • Web应用程序:在电子商务网站中,用户数据、产品信息和订单数据通常存储在数据库中,后端代码通过编程语言与数据库进行交互。

  • 数据分析:数据科学家使用Python等语言从数据库中提取数据进行分析和建模。

  • 移动应用:移动应用程序通过API与数据库交互,获取和更新用户数据。

通过编程语言与数据库的交互,开发者能够实现数据驱动的应用程序,提高业务效率和用户体验。

使用MySQL与Python进行交互的示例

接下来,我将通过一个具体的示例来演示如何使用Python与MySQL进行交互。我将创建一个简单的在线图书商店应用程序,使用Python来连接数据库、插入数据、查询数据等。

步骤1:安装所需库

在开始之前,要确保安装了mysql-connector-python库,它是Python与MySQL数据库交互的官方库。可以使用以下命令进行安装:

pip install mysql-connector-python
步骤2:准备数据库和表

创建一个简单的数据库和表,使用MySQL命令行或MySQL Workbench创建一个名为Bookstore的数据库,并在其中创建一个Books表。

-- 创建数据库
CREATE DATABASE IF NOT EXISTS Bookstore;

-- 选择数据库
USE Bookstore;

-- 创建书籍表
CREATE TABLE IF NOT EXISTS Books (
    BookID INT AUTO_INCREMENT PRIMARY KEY,
    Title VARCHAR(100) NOT NULL,
    Author VARCHAR(100) NOT NULL,
    ISBN VARCHAR(20) NOT NULL UNIQUE,
    Price DECIMAL(10, 2) NOT NULL,
    StockQuantity INT NOT NULL DEFAULT 0
);
步骤3:使用Python连接MySQL数据库

接下来,编写Python代码来连接MySQL数据库并进行基本的操作。

import mysql.connector
from mysql.connector import Error

def create_connection():
    """创建与MySQL数据库的连接"""
    connection = None
    try:
        connection = mysql.connector.connect(
            host='localhost',         # 数据库主机
            user='root',              # 数据库用户名
            password='your_password',  # 数据库密码
            database='Bookstore'      # 数据库名称
        )
        print("成功连接到MySQL数据库")
    except Error as e:
        print(f"连接错误: {e}")
    return connection

解释

  • mysql.connector.connect(...):用于建立与MySQL数据库的连接。

  • hostuserpassworddatabase参数分别指定数据库主机、用户名、密码和数据库名称。

步骤4:插入数据

编写一个函数,用于向Books表中插入新书籍的数据。

def insert_book(connection, title, author, isbn, price, stock_quantity):
    """插入新书籍到Books表"""
    cursor = connection.cursor()
    query = """INSERT INTO Books (Title, Author, ISBN, Price, StockQuantity) 
               VALUES (%s, %s, %s, %s, %s)"""
    values = (title, author, isbn, price, stock_quantity)
    
    try:
        cursor.execute(query, values)  # 执行插入操作
        connection.commit()             # 提交事务
        print("书籍插入成功")
    except Error as e:
        print(f"插入错误: {e}")
    finally:
        cursor.close()                 # 关闭游标

解释

  • cursor = connection.cursor():创建一个游标对象,用于执行SQL语句。

  • cursor.execute(query, values):执行插入操作,%s占位符用于安全地插入变量。

  • connection.commit():提交事务,确保数据被写入数据库。

步骤5:查询数据

编写一个函数,用于查询Books表中的所有书籍。

def fetch_books(connection):
    """查询Books表中的所有书籍"""
    cursor = connection.cursor()
    query = "SELECT * FROM Books"
    
    try:
        cursor.execute(query)          # 执行查询
        rows = cursor.fetchall()       # 获取所有结果
        for row in rows:
            print(row)                 # 打印每一行数据
    except Error as e:
        print(f"查询错误: {e}")
    finally:
        cursor.close()                 # 关闭游标

解释

  • cursor.execute(query):执行查询操作。

  • cursor.fetchall():获取查询结果的所有行。

  • for row in rows::遍历并打印每一行数据。

步骤6:主程序

最后,编写主程序来执行上述功能。

if __name__ == "__main__":
    # 创建数据库连接
    connection = create_connection()
    
    if connection is not None:
        # 插入示例书籍
        insert_book(connection, 'The Great Gatsby', 'F. Scott Fitzgerald', '9780743273565', 10.99, 100)
        insert_book(connection, '1984', 'George Orwell', '9780451524935', 8.99, 150)
        
        # 查询并打印所有书籍
        print("书籍列表:")
        fetch_books(connection)
        
        # 关闭数据库连接
        connection.close()

解释

  • if __name__ == "__main__"::确保只有在直接运行脚本时才执行主程序。

  • create_connection():创建与数据库的连接。

  • insert_book(...):插入示例书籍数据。

  • fetch_books(connection):查询并打印所有书籍。

  • connection.close():关闭数据库连接,释放资源。

当然可以!接下来分别介绍如何使用Java和PHP与MySQL进行交互,包括连接数据库、执行查询和插入数据的示例。

使用MySQL与Java进行交互

1. 环境准备

在Java中,通常使用JDBC(Java Database Connectivity)来与MySQL进行交互。首先,确保你已经安装了MySQL数据库,并且下载了MySQL JDBC驱动程序(通常是mysql-connector-java-x.x.x.jar)。

2. 添加JDBC驱动

如果你使用Maven管理项目依赖,可以在pom.xml中添加以下依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version> <!-- 请根据需要选择版本 -->
</dependency>
3. 连接MySQL数据库

下面是一个简单的Java程序,演示如何连接到MySQL数据库并执行基本操作。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MySQLJavaExample {
    private static final String URL = "jdbc:mysql://localhost:3306/Bookstore"; // 数据库URL
    private static final String USER = "root"; // 数据库用户名
    private static final String PASSWORD = "your_password"; // 数据库密码

    public static void main(String[] args) {
        Connection connection = null;

        try {
            // 连接到数据库
            connection = DriverManager.getConnection(URL, USER, PASSWORD);
            System.out.println("成功连接到MySQL数据库");

            // 插入书籍
            insertBook(connection, "The Great Gatsby", "F. Scott Fitzgerald", "9780743273565", 10.99, 100);
            insertBook(connection, "1984", "George Orwell", "9780451524935", 8.99, 150);

            // 查询书籍
            System.out.println("书籍列表:");
            fetchBooks(connection);
        } catch (SQLException e) {
            System.out.println("连接错误: " + e.getMessage());
        } finally {
            try {
                if (connection != null) {
                    connection.close(); // 关闭连接
                }
            } catch (SQLException e) {
                System.out.println("关闭连接错误: " + e.getMessage());
            }
        }
    }

    private static void insertBook(Connection connection, String title, String author, String isbn, double price, int stockQuantity) {
        String query = "INSERT INTO Books (Title, Author, ISBN, Price, StockQuantity) VALUES (?, ?, ?, ?, ?)";
        try (PreparedStatement pstmt = connection.prepareStatement(query)) {
            pstmt.setString(1, title);
            pstmt.setString(2, author);
            pstmt.setString(3, isbn);
            pstmt.setDouble(4, price);
            pstmt.setInt(5, stockQuantity);
            pstmt.executeUpdate(); // 执行插入操作
            System.out.println("书籍插入成功: " + title);
        } catch (SQLException e) {
            System.out.println("插入错误: " + e.getMessage());
        }
    }

    private static void fetchBooks(Connection connection) {
        String query = "SELECT * FROM Books";
        try (PreparedStatement pstmt = connection.prepareStatement(query);
             ResultSet rs = pstmt.executeQuery()) { // 执行查询
            while (rs.next()) {
                System.out.println("书籍ID: " + rs.getInt("BookID") + ", 标题: " + rs.getString("Title") +
                        ", 作者: " + rs.getString("Author") + ", ISBN: " + rs.getString("ISBN") +
                        ", 价格: " + rs.getDouble("Price") + ", 库存: " + rs.getInt("StockQuantity"));
            }
        } catch (SQLException e) {
            System.out.println("查询错误: " + e.getMessage());
        }
    }
}
代码解释
  1. 连接数据库

    • 使用DriverManager.getConnection()方法连接到MySQL数据库。

    • URL格式为jdbc:mysql://主机:端口/数据库名

  2. 插入数据

    • 使用PreparedStatement来安全地插入数据,防止SQL注入。

    • 使用executeUpdate()方法执行插入操作。

  3. 查询数据

    • 使用ResultSet获取查询结果,并通过while循环遍历结果集。

  4. 关闭连接

    • 使用try-with-resources语句确保资源在使用后被正确关闭。

使用MySQL与PHP进行交互

1. 环境准备

在PHP中,使用mysqliPDO(PHP Data Objects)扩展与MySQL进行交互。以下示例将使用mysqli

2. 连接MySQL数据库

下面是一个简单的PHP脚本,演示如何连接到MySQL数据库并执行基本操作。

<?php
$host = "localhost"; // 数据库主机
$user = "root"; // 数据库用户名
$password = "your_password"; // 数据库密码
$dbname = "Bookstore"; // 数据库名称

// 创建连接
$conn = new mysqli($host, $user, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "成功连接到MySQL数据库<br>";

// 插入书籍
insertBook($conn, "The Great Gatsby", "F. Scott Fitzgerald", "9780743273565", 10.99, 100);
insertBook($conn, "1984", "George Orwell", "9780451524935", 8.99, 150);

// 查询书籍
echo "书籍列表:<br>";
fetchBooks($conn);

// 关闭连接
$conn->close();

function insertBook($conn, $title, $author, $isbn, $price, $stockQuantity) {
    $stmt = $conn->prepare("INSERT INTO Books (Title, Author, ISBN, Price, StockQuantity) VALUES (?, ?, ?, ?, ?)");
    $stmt->bind_param("ssssi", $title, $author, $isbn, $price, $stockQuantity); // 绑定参数

    if ($stmt->execute()) {
        echo "书籍插入成功: " . $title . "<br>";
    } else {
        echo "插入错误: " . $stmt->error . "<br>";
    }
    $stmt->close(); // 关闭语句
}

function fetchBooks($conn) {
    $sql = "SELECT * FROM Books";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        // 输出数据
        while ($row = $result->fetch_assoc()) {
            echo "书籍ID: " . $row["BookID"] . ", 标题: " . $row["Title"] .
                ", 作者: " . $row["Author"] . ", ISBN: " . $row["ISBN"] .
                ", 价格: " . $row["Price"] . ", 库存: " . $row["StockQuantity"] . "<br>";
        }
    } else {
        echo "没有书籍记录<br>";
    }
}
?>
代码解释
  1. 连接数据库

    • 使用new mysqli()创建与MySQL数据库的连接。

    • 检查连接是否成功。

  2. 插入数据

    • 使用prepare()方法创建预处理语句。

    • 使用bind_param()绑定参数,确保数据安全。

    • 使用execute()方法执行插入操作。

  3. 查询数据

    • 使用query()方法执行查询。

    • 使用fetch_assoc()遍历结果集并输出数据。

  4. 关闭连接

    • 使用$conn->close()关闭数据库连接。

总结

通过上述示例展示了如何使用开发语言与MySQL进行交互,以上举例方法不仅适用于图书商店的例子,还可以扩展到其他各种应用场景中,如数据分析、Web应用程序开发等。

标签:实战篇,Java,数据库,书籍,插入,connection,MySQL,连接
From: https://blog.csdn.net/thinking_chou/article/details/143272628

相关文章

  • 【MySQL】运维篇—MySQL安装与配置:MySQL的安装与初始配置
    安装和配置MySQL是数据库运维的基础,正确的安装和配置可以确保系统的稳定性和安全性。在本节中,将详细介绍如何在不同平台上安装和配置MySQL,包括Windows、Linux(Ubuntu)和macOS。每个示例都将包括详细的步骤和代码注释。1.在Windows上安装与配置MySQL步骤1:下载MySQL安装包访......
  • MySQL的自增ID用完了应该怎么办
    一种解决方法是使用BIGINT数据类型。BIGINT数据类型的最大值是9223372036854775807,这比INT数据类型大得多。如果您使用BIGINT数据类型来存储自增ID,那么您的表可以插入更多的数据。一、MySQL的自增ID用完了应该怎么办解决方案1:使用BIGINT数据类型一种解决方法是使用BIGINT数......
  • 厉兵秣马之Java 语言基础和进阶(二)
    续写厉兵秣马之Java语言基础和进阶(一)厉兵秣马之Java语言基础和进阶(二)5.抽象类6.接口7.抽象类与接口区别8.JAVA集合类的使用8.1.列表(List)8.2.集合(Set)8.3.映射(Map)8.4.队列(Queue)8.5.其他集合类8.6.迭代器(Iterator)9JAVA包、内部类和匿名类9.1.包(Package)9.2.......
  • java计算机毕业设计大学城水电管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着大学城规模的不断扩大,水电管理面临着日益复杂的挑战。传统的水电管理方式多依赖人工操作,效率低下且容易出错。例如,在记录水电消耗数据时,人工......
  • java计算机毕业设计发电站(开题+程序+论文)
    系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着社会的不断发展,能源需求日益增长,发电站作为能源供应的关键设施,其规模和复杂度不断提高。在现代发电站的运营管理中,数据的有效统计和人员的合理......
  • java计算机毕业设计冬奥资讯系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着2022年北京冬奥会的成功举办,冰雪运动在全球范围内受到了更广泛的关注。冬奥会作为展示冰雪运动魅力、推动冰雪产业发展以及促进国际体育文化......
  • java计算机毕业设计电子病历系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今数字化时代,医疗行业面临着巨大的变革需求。传统的纸质病历管理方式存在诸多弊端,如存储不便、易丢失、查阅困难且效率低下等问题 [5] 。......
  • java计算机毕业设计博物馆信息系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,各行各业都在积极进行数字化转型,博物馆也不例外。博物馆作为文化传承与展示的重要场所,拥有海量的典藏文物、丰富多彩的活......
  • java计算机毕业设计公司人事管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今快速发展的商业环境中,企业规模不断扩大,员工数量日益增多,传统的人事管理方式面临着巨大的挑战。人工处理员工、部门信息、员工签到、请假申......
  • 备战蓝桥杯JAVA B组Day10
    备战蓝桥杯JAVAB组Day10目录备战蓝桥杯JAVAB组Day10前言P1428小鱼比可爱P1427小鱼的数字游戏P5727【深基5.例3】冰雹猜想P1047[NOIP2005普及组]校门外的树P5728【深基5.例5】旗鼓相当的对手前言零基础小白备战蓝桥杯第十天,刷题内容为:洛谷题单【入门3】循......