給出XML文件,要求可以通過解析操作將所有的相關數據插入到數據庫表中

Javaweb第三章課後習題

 

需要的jar包:

Connector-J-8.0鏈接:https://pan.baidu.com/s/1ZGZF0L_aJ2zOaJJ6wPneRA   提取碼:dhr6

dom4j-2.1.1鏈接:https://pan.baidu.com/s/1y4QBNbvd2utexnX-xtt_7w    提取碼:k7h5

首先,建立一張數據表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文件,向數據庫表中插入數據

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) {
			// TODO Auto-generated catch block
			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) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println(conn);		
		
		try {
			stmt = conn.createStatement();	//創建statement類對象,用來執行SQL語句
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		try {
			stmt.executeUpdate(sql);
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}	//執行數據庫更新操作			
		
		try {
			stmt.close();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}	//操作關閉
		
		try {
			conn.close();	//數據庫關閉
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

 插入數據前後:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章