Java取出数据库表中的全部数据并生成一个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的文件夹,把上述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 

废话不多说,直接上代码:

LinkDB.java

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) {
			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 {
			rs = stmt.executeQuery(sql);
		} catch (SQLException e) {
			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) {
			e.printStackTrace();
		}
		
		rs.close();
		
	}

}

输出结果为:

输出的XML文件用记事本打开为:

用浏览器打开为:

注:数据表是我自己建立的,数据库名为uuu,数据表名为dept

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

写bug断了电

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

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

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

打赏作者

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

抵扣说明:

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

余额充值