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