取出數據庫表中的全部數據並生成一個XML的數據

Javaweb第三章課後習題

加載數據庫驅動程序是JDBC操作的第一步,而不同數據庫的驅動程序路徑是不一樣的,MySQL中的數據庫驅動程序是com.mysql.cj.jdbc.Driver(我用的是mysql-connector-java-8.0.12,而mysql-connector-java-5.0.4-bin.jar的驅動程序路徑則爲:org.gjt.mm.mysql.Driver),若不是這兩種版本的包,可以用下面這種方式查詢驅動路徑:因爲路徑的實質就是“包.類”,所以你可以打開下載的包的文件夾,找到jar包:

打開方式用解壓縮軟件,找到Driver.class文件:

所以此數據庫的驅動程序路徑爲:com.mysql.cj.jdbc.Driver,然後建立一個Java Project,在該項目下建立一個名爲lib的Folder,把上述jar包複製導入

要生成XML文件還需要導入一個jar包——jdom-2.0.6.jar,JDOM是使用Java語言編寫的、用於讀、寫、操作XML的一套組件,可以直接從http://www.jdom.org/downloads/index.html官網上下載JDOM的開發包。

需要用到的jar包:

Connector-J-8.0鏈接:https://pan.baidu.com/s/1T7iDp0QhN5zwUFhHvJegTg   提取碼:p44a
jdom-2.0.6鏈接:https://pan.baidu.com/s/1U2ffZLApdvHOla_HpcGKqA    提取碼:t4vi 

廢話不多說,直接上代碼:

package test03;

import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.XMLOutputter;

public class LinkDB {

	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/uuu?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) throws Exception {
		Connection conn = null;	//數據庫連接
		Statement stmt = null;	//數據庫操作	
		ResultSet rs = null;	//保存查詢結果
		String sql = "SELECT * FROM dept";	//要執行的SQL語句,從dept表中查詢所有數據
		
		try {
			Class.forName(DBDRIVER).newInstance();	//加載驅動程序
			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 {
			rs = stmt.executeQuery(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		Element addresslist = new Element("uuu");	//定義根節點
		Document doc = new Document(addresslist);	//聲明一個Document對象
		
		while(rs.next()) {//指針向下移動
			int deptno = rs.getInt("deptno");	//取得deptno內容
			String dname = rs.getString("dname");	//取得dname內容
			String loc = rs.getString("loc");	//取得loc內容
			
			Element linkman = new Element("dept");	//定義linkman節點
			Element deno = new Element("deptno");	//定義deptno節點
			Element dename = new Element("dname");	//定義dname節點
			Element dloc = new Element("loc");	//定義loc節點
			
			deno.setText(String.valueOf(deptno));
			dename.setText(dname);
			dloc.setText(loc);
			
			linkman.addContent(deno);	//deno爲linkman的子節點
			linkman.addContent(dename);
			linkman.addContent(dloc);
			
			addresslist.addContent(linkman);	//將linkman加入根節點中
			XMLOutputter out = new XMLOutputter();	//用來輸出XML文件
			out.setFormat(out.getFormat().setEncoding("GBK"));	//設置輸出的編碼
			try {
				out.output(doc, new FileOutputStream("D:" + File.separator + "dept.xml"));
			} catch(Exception e) {
				e.printStackTrace();
			}
			
			System.out.print("部門編號:" + deptno + ";" + "\t");
			System.out.print("部門名稱:" + dname+ ";" + "\t");
			System.out.println("部門位置:" + loc + ";");
		}
		
		try {
			conn.close();	//關閉數據庫
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		rs.close();
		
	}

}

輸出結果爲:

輸出的XML文件用記事本打開爲:

用瀏覽器打開爲:

注:數據表是我自己建立的,數據庫名爲uuu,數據表名爲dept

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