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
