Javaweb给出XML文件,要求可以通过解析操作将所有的相关数据插入到数据库表中

Javaweb第三章课后习题

需要的jar包(自行下载):Connector-J-8.0,dom4j-2.1.1

首先,建立一张数据表emp,我建立的数据库和数据表名都为emp

然后创建一个XML文件,命名为employee.xml,保存在D盘,用来解析

<?xml version="1.0" encoding="GBK"?>
<emps>
    <emp>
        <empno>1000</empno>
        <ename>张三</ename>
        <job>经理</job>
        <hiredate>1998-08-16</hiredate>
        <sal>3000</sal>
        <comm>500</comm>
    </emp>
</emps>

接下来就是利用DOM4J解析XML文件,向数据库表中插入数据

InsertData.java

package test03;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class InsertData {
	
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	//定义MySQL的数据库驱动程序,本程序用的是mysql-connector-java-8.0.12.jar
	public static final String DBURL = "jdbc:mysql://localhost:3306/emp?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
	//定义MySQL数据库的连接地址,格式:jdbc:mysql://IP地址:端口号/数据库名?字符集为utf-8&时区为GMT&SSL连接关闭
	public static final String DBUSER = "root";	//MySQL数据库的连接用户名
	public static final String DBPASS = "123456";	//MySQL数据库的连接密码
	public static void main(String[] args) {
		
		File file = new File("D:" + File.separator + "employee.xml");	//读取文件
		SAXReader reader = new SAXReader();	//建立SAX解析读取
		Document doc = null;
		try {
			doc = reader.read(file);	//读取文档
		} catch(DocumentException e) {
			e.printStackTrace();
		}
		
		String emno = "";
		String emname = "";
		String emjob = "";
		String emhiredate = "";
		String emsal = "";
		String emcomm = "";
		
		Element root = doc.getRootElement();	//取得根元素
		Iterator<Element> iter = root.elementIterator();	//取得全部的子节点
		while(iter.hasNext()) {
			Element linkman = iter.next();	//取得每一个linkman
						
			emno = linkman.elementText("empno");
			emname = linkman.elementText("ename");
			emjob = linkman.elementText("job");
			emhiredate = linkman.elementText("hiredate");
			emsal = linkman.elementText("sal");
			emcomm = linkman.elementText("comm");
						
		}
		
		Connection conn = null;	//数据库连接
		Statement stmt = null;	//数据库操作	
				
		String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal,comm)" + "VALUES('"+ emno +"','"+ emname +"','"+ emjob + "','"+ emhiredate +"','"+ emsal +"','"+ emcomm +"')";	//插入数据操作,拼凑出一个完整的SQL语句
		
		try {
			Class.forName(DBDRIVER);	//加载驱动程序
			System.out.println("加载驱动程序成功!");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		try {
			conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
			System.out.println("连接数据库!");
			if(!conn.isClosed()) {
                System.out.println("Succeeded connecting to the Database!");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		System.out.println(conn);		
		
		try {
			stmt = conn.createStatement();	//创建statement类对象,用来执行SQL语句
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		try {
			stmt.executeUpdate(sql);
		} catch (SQLException e1) {
			e1.printStackTrace();
		}	//执行数据库更新操作			
		
		try {
			stmt.close();
		} catch (SQLException e1) {
			e1.printStackTrace();
		}	//操作关闭
		
		try {
			conn.close();	//数据库关闭
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}

}

 插入数据前后:

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写bug断了电

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值