MySQL 数据库操作及 XML 解析实战:创建表、插入数据、读取配置和解析 XML

1. 创建数据库和数据表

首先,我们创建一个名为 'test_db_char' 的数据库,并创建一个名为 'tb_emp' 的数据表,用于存储学生的基本信息。

CREATE DATABASE test_db_char;
USE test_db_char;
CREATE TABLE tb_emp (
    id VARCHAR(18) PRIMARY KEY,
    Name VARCHAR(18),
    sex VARCHAR(2),
    age INT,
    address VARCHAR(200)
);

2. 插入数据

接下来,我们向 'tb_emp' 表中插入三条数据。

INSERT INTO tb_emp (id, Name, sex, age, address) VALUES ('1000000000000', '张三', '男', 22, '南岗区学府路');
INSERT INTO tb_emp (id, Name, sex, age, address) VALUES ('1000000000001', '李四', '女', 21, '道里区友谊路');
INSERT INTO tb_emp (id, Name, sex, age, address) VALUES ('1000000000002', '王五', '男', 25, '南岗区学府路');

3. 创建 DTD 文件

为了规范数据库配置信息,我们创建 'database.dtd' 文件,定义 XML 文档的结构。

<!ELEMENT databases (db+)>
<!ELEMENT db (url,user,password)>
<!ELEMENT url (#PCDATA)>
<!ELEMENT user (#PCDATA)>
<!ELEMENT password (#PCDATA)>

4. 创建 database.xml 文件

根据 DTD 文件,我们创建 'database.xml' 文件,用于存放数据库连接信息。

<!DOCTYPE databases SYSTEM "database.dtd">
<databases>
  <db>
    <url>jdbc:mysql://localhost:3306/test_db_char</url>
    <user>root</user>
    <password>123456</password>
  </db>
</databases>

5. 创建 ReadFile 类

编写 Java 类 'ReadFile',用于解析 'database.xml' 文件,获取数据库连接信息。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class ReadFile {
    private String url;
    private String user;
    private String password;
    
    public void parseXML(String filePath) {
        try {
            File xmlFile = new File(filePath);
            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
            Document document = documentBuilder.parse(new FileInputStream(xmlFile));
            document.getDocumentElement().normalize();
            NodeList nodeList = document.getElementsByTagName("db");
            for (int i = 0; i < nodeList.getLength(); i++) {
                Node node = nodeList.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) node;
                    this.url = element.getElementsByTagName("url").item(0).getTextContent();
                    this.user = element.getElementsByTagName("user").item(0).getTextContent();
                    this.password = element.getElementsByTagName("password").item(0).getTextContent();
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public String getUrl() {
        return url;
    }
    
    public String getUser() {
        return user;
    }
    
    public String getPassword() {
        return password;
    }
}

6. 创建 OperateDB 类

编写 Java 类 'OperateDB',使用 'ReadFile' 类解析的数据库连接信息,实现数据库操作,包括读取所有数据和插入一条新数据。

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

public class OperateDB {
    private Connection connection;
    private String url;
    private String user;
    private String password;
    
    public OperateDB(String url, String user, String password) {
        this.url = url;
        this.user = user;
        this.password = password;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    public void printAllData() {
        String sql = "SELECT * FROM tb_emp";
        try {
            PreparedStatement statement = connection.prepareStatement(sql);
            ResultSet resultSet = statement.executeQuery();
            while (resultSet.next()) {
                String id = resultSet.getString("id");
                String name = resultSet.getString("Name");
                String sex = resultSet.getString("sex");
                int age = resultSet.getInt("age");
                String address = resultSet.getString("address");
                System.out.println(id + "\t" + name + "\t" + sex + "\t" + age + "\t" + address);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    public void insertData(String id, String name, String sex, int age, String address) {
        String sql = "INSERT INTO tb_emp(id, Name, sex, age, address) VALUES(?, ?, ?, ?, ?)";
        try {
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1, id);
            statement.setString(2, name);
            statement.setString(3, sex);
            statement.setInt(4, age);
            statement.setString(5, address);
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        ReadFile readFile = new ReadFile();
        readFile.parseXML("database.xml");
        OperateDB operateDB = new OperateDB(readFile.getUrl(), readFile.getUser(), readFile.getPassword());
        System.out.println("初始表数据:");
        operateDB.printAllData();
        System.out.println("插入新数据:");
        operateDB.insertData("2021000000000", "张三", "男", 20, "上海市浦东新区");
        operateDB.printAllData();
    }
}

7. 运行程序

运行 'OperateDB' 类中的 'main' 方法,程序将执行以下操作:

  1. 解析 'database.xml' 文件,获取数据库连接信息。
  2. 连接数据库,并输出 'tb_emp' 表中的所有数据。
  3. 向 'tb_emp' 表中插入一条新数据。
  4. 再次输出 'tb_emp' 表中的所有数据,展示插入后的结果。

总结

本文通过一个完整的示例,展示了如何使用 MySQL 创建数据库和数据表,插入数据,以及使用 Java 编写 XML 解析程序,读取数据库配置信息并实现数据库操作。希望本文能够帮助读者更好地理解相关知识,并能够将其应用到自己的实际项目中。

MySQL 数据库操作及 XML 解析实战:创建表、插入数据、读取配置和解析 XML

原文地址: https://www.cveoy.top/t/topic/ozqQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录