MySQL 数据库操作及 XML 解析实战:创建表、插入数据、读取配置和解析 XML
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' 方法,程序将执行以下操作:
- 解析 'database.xml' 文件,获取数据库连接信息。
- 连接数据库,并输出 'tb_emp' 表中的所有数据。
- 向 'tb_emp' 表中插入一条新数据。
- 再次输出 'tb_emp' 表中的所有数据,展示插入后的结果。
总结
本文通过一个完整的示例,展示了如何使用 MySQL 创建数据库和数据表,插入数据,以及使用 Java 编写 XML 解析程序,读取数据库配置信息并实现数据库操作。希望本文能够帮助读者更好地理解相关知识,并能够将其应用到自己的实际项目中。
原文地址: https://www.cveoy.top/t/topic/ozqQ 著作权归作者所有。请勿转载和采集!