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();
}
}
}
插入數據前後: