package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
//数据库驱动对象
public static final String DRIVER="oracle.jdbc.driver.OracleDriver";
//数据库连接地址(数据库名)
public static final String URL="jdbc:oracle:thin:@192.168.110.2:1521:oraplan";
//登陆名
public static final String NAME="supplan";
//登陆密码
public static final String PWD="plansup";
private static Connection conn =null ; //连接实例
/*******************单例模式的应用开始***************************/
private static DBConnection DBInstance = new DBConnection(); //数据库类实例:单例模式第一步
//私有的构造方法:单例模式第二步
private DBConnection(){
try {
Class.forName(DRIVER); //注册驱动
conn = DriverManager.getConnection(URL,NAME,PWD); //获取连接
} catch (ClassNotFoundException e) {
System.out.println("找不到指定文件!"); //找不到驱动包
e.printStackTrace();
}catch(SQLException e){ //连接数据库时报异常
e.printStackTrace();
}
}
//获取实例:单例模式第三步
public static DBConnection getInstance(){
return DBInstance;
}
/*******************单例模式的应用结束***************************/
//获取连接
public Connection getConn(){
return conn;
}
//测试
public static void main(String[] agrs){
Connection conn = DBConnection.getInstance().getConn();
if(conn!=null){
System.out.println("数据库连接成功2");
}else{
System.out.println("数据库连接失败");
}
}
}
2.建立实例类
package com.util;
import java.util.Date;
public class WorkRecord {
private String com_id;//公司编号
private String ID;//编号
private String content;//日记内容
private String clock; //时间
private String YH_ID;//用户编号
public String getCom_id() {
return com_id;
}
public void setCom_id(String com_id) {
this.com_id = com_id;
}
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getClock() {
return clock;
}
public void setClock(String clock) {
this.clock = clock;
}
public String getYH_ID() {
return YH_ID;
}
public void setYH_ID(String yH_ID) {
YH_ID = yH_ID;
}
}
3.
package com.CRUD;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.dao.impl.DOMImpl;
import com.util.DBConnection;
import com.util.WorkRecord;
public class CRUDImpl {
private Connection conn=null;
private PreparedStatement pst=null;
private ResultSet rs=null;
//全查
public List findAll(){
List recordList = new ArrayList(); //创建List实例
WorkRecord record=null;
try {
String sql = "select * from TEST_XML";//sql语句
conn = DBConnection.getInstance().getConn();//建立连接
pst = conn.prepareStatement(sql);//发送sq命令并进行预编译
rs = pst.executeQuery();//实行sql命令并返回结果集
while(rs.next()){ //如果rs.next()为true,说明结果集中有值,也就需要进行遍历了
record = new WorkRecord();
record.setCom_id(rs.getString(1)); //第一列
record.setID(rs.getString(2));
record.setContent(rs.getString(3));
//
record.setClock(rs.getString(4));
//record.setClock(new DOMImpl().dateToString(rs.getDate(4))); //数据库中此列的数据为Date类型,WorkRecord中的是String类型的
record.setYH_ID(rs.getString(5));
recordList.add(record);//将对象添加到list中
}
} catch (SQLException e) {
e.printStackTrace();
}
return recordList; //返回结果
}
}
4.生成和解析XML文档
package com.dao.impl;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.dom4j.Attribute;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
import com.CRUD.CRUDImpl;
import com.util.WorkRecord;
/**
* DOM生成和解析XML文档
* */
public class DOMImpl {
private Document document;
private DocumentBuilder builder;
/**
* 初始化
* */
public void init() {
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();//创建解析工厂实例
builder = builderFactory.newDocumentBuilder(); //创建解析器实例
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
/**
* 创建XML
* @param fileName 文件路径名称
* */
public void creatXML(String fileName) {
CRUDImpl CRUD = new CRUDImpl(); //实例化
List recordList = CRUD.findAll(); //查询结果
this.document = builder.newDocument();//实例化document对象
//是否呼叫外部文件,此处设置为true,表示此文件独立,不需要呼叫外部文件,也就是不需要导入外部的dtd文件
this.document.setXmlStandalone(true);
this.document.setXmlVersion("1.0");//版本号
Element menu_config = this.document.createElement("menu-config"); //创建根目录
Element menu = this.document.createElement("menu");//创建menu
for(int i=0;i getRecordList(String fileName){
List workList = new ArrayList();
try {
this.document=builder.parse(fileName);//指定要解析的文件
NodeList root = this.document.getChildNodes();//获取根目录
for(int i=0;i
5.测试
package com.test;
import java.util.List;
import com.dao.impl.DOMImpl;
import com.util.WorkRecord;
public class DOMXmlTest {
public static void main(String[] args){
DOMImpl dom = new DOMImpl();
String fileName = "D:\\XML\\DOMXml.xml";
dom.init();
dom.creatXML(fileName); //创建XML文件
// dom.parseXML(fileName);//解析XML
//遍历
/* List workList =dom.getRecordList(fileName);
for(int i=0;i