• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    clob保存為本地xml文件,修改后上傳

    來源:懂視網 責編:小采 時間:2020-11-09 14:44:55
    文檔

    clob保存為本地xml文件,修改后上傳

    clob保存為本地xml文件,修改后上傳:這兩天與小伙伴寫了一個小程序,實現的功能如下: 首先將數據庫的clob保存為本地的xml文件,然后對xml進行修改后上傳至數據庫 主要的難點如下: 1:clob文件的下載與上傳,其中保存為本地的文件要求是UTF-8格式 2:xml文件中節點的修改 clob的上傳與下載
    推薦度:
    導讀clob保存為本地xml文件,修改后上傳:這兩天與小伙伴寫了一個小程序,實現的功能如下: 首先將數據庫的clob保存為本地的xml文件,然后對xml進行修改后上傳至數據庫 主要的難點如下: 1:clob文件的下載與上傳,其中保存為本地的文件要求是UTF-8格式 2:xml文件中節點的修改 clob的上傳與下載

    這兩天與小伙伴寫了一個小程序,實現的功能如下: 首先將數據庫的clob保存為本地的xml文件,然后對xml進行修改后上傳至數據庫 主要的難點如下: 1:clob文件的下載與上傳,其中保存為本地的文件要求是UTF-8格式 2:xml文件中節點的修改 clob的上傳與下載如下

    這兩天與小伙伴寫了一個小程序,實現的功能如下:

    首先將數據庫的clob保存為本地的xml文件,然后對xml進行修改后上傳至數據庫

    主要的難點如下:

    1:clob文件的下載與上傳,其中保存為本地的文件要求是UTF-8格式

    2:xml文件中節點的修改

    clob的上傳與下載如下

    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.Reader;
    import java.io.UnsupportedEncodingException;
    import java.sql.Clob;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    /**
     * @author GuoDi-CT DC
     *
     */
    
    public class ClobModify {
    
    	/**
    	 *@param id 數據庫中的ID
    	 * 返回 保存文件的絕對路徑
    	 */
    	public static String ClobToXml(int id) {
    	Connection conn = DB.getConn();
    	Statement stmt = DB.createStmt(conn);
    	String sql = "select * from BD_PROCESS_DEF_VER where ID =" + id;
    	ResultSet rs = DB.getRs(stmt, sql);
    	String xmlFile = null;
    
    	try {
    	if (rs.next()) {
    	int fjbh = rs.getInt(1);
    	xmlFile = "d:\\xml\\" + fjbh + ".xml";
    	Clob clob = rs.getClob(16);
    	FileOutputStream fo = new FileOutputStream(xmlFile);
    	OutputStreamWriter so = new OutputStreamWriter(fo, "UTF-8");
    	if (clob != null) {
    	Reader is = clob.getCharacterStream();
    	BufferedReader br = new BufferedReader(is);
    	String s = br.readLine();
    	while (s != null) {
    	so.write(s + System.getProperty("line.separator"));
    // System.out.println(str);
    	s = br.readLine();
    	}
    	}
    	so.flush();
    	so.close();
    	}
    	} catch (SQLException | IOException e) {
    	e.printStackTrace();
    	}
    	DB.close(rs);
    	DB.close(stmt);
    	DB.close(conn);
    	return xmlFile;
    	}
    
    	public static void updateClob(String fileName, int id) {
    
    	FileInputStream fis = null;
    	InputStreamReader rd = null;
    	
    	try {
    	fis = new FileInputStream(fileName);
    	rd = new InputStreamReader(fis, "UTF-8");
    	} catch (FileNotFoundException e2) {
    	e2.printStackTrace();
    	} catch (UnsupportedEncodingException e) {
    	e.printStackTrace();
    	}
    
    	PreparedStatement pst = null;
    	Connection conn = DB.getConn();
    	Statement stmt = DB.createStmt(conn);
    	try {
    	conn.setAutoCommit(false);
    	} catch (SQLException e1) {
    	e1.printStackTrace();
    	}
    
    	String sql1 = "update BD_PROCESS_DEF_VER s set s.NODE_INFO=' ' where ID="
    	+ id; // 這邊需要設置一個空的字段,后面就不會出現空指針
    	try {
    	stmt.execute(sql1);
    	} catch (SQLException e) {
    	e.printStackTrace();
    	}
    	
    	String sql2 = "select * from BD_PROCESS_DEF_VER s where s.ID=" + id;
    	// 鎖定數據行進行更新,注意“for update”語句
    	ResultSet rs = null;
    	try {
    	rs = stmt.executeQuery(sql2);
    	} catch (SQLException e) {
    	e.printStackTrace();
    	}
    	
    	try {
    	while (rs.next()) {
    	String sql3 = "update BD_PROCESS_DEF_VER set NODE_INFO= ? where ID="+ id;
    	pst = conn.prepareStatement(sql3);
    	pst.setCharacterStream(1, rd, 100000000);
    	pst.executeUpdate();
    	}
    	// 最后一步自己提交
    	conn.commit();
    	conn.setAutoCommit(true);
    
    	} catch (SQLException e) {
    	e.printStackTrace();
    	} finally {
    	DB.close(rs);
    	DB.close(stmt);
    	try {
    	pst.close();
    	} catch (SQLException e) {
    	e.printStackTrace();
    	}
    	DB.close(conn);
    	}
    	}
    }

    其中DB是連接數據庫的javabean,如下
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    /**
     * @author GuoDi-CT DC 
     * jdcbc JavaBean
     * 
     */
    public class DB {
    	// 驅動程序就是之前在classpath中配置的JDBC的驅動程序的JAR 包中
    	public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
    	// 連接地址是由各個數據庫生產商單獨提供的,所以需要單獨記住
    	public static final String DBURL = "jdbc:oracle:thin:@172.17.20.215:1521:BPMIDE";
    	// 連接數據庫的用戶名
    	public static final String DBUSER = "bpmduser";
    	// 連接數據庫的密碼
    	public static final String DBPASS = "bpmd";
    
    	public static Connection getConn() {
    	Connection conn = null;
    	try {
    	Class.forName(DBDRIVER);
    	conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); // 2、連接數據庫
    	} catch (ClassNotFoundException e) {
    	e.printStackTrace();
    	} // 1、使用CLASS 類加載驅動程序
    	catch (SQLException e) {
    	e.printStackTrace();
    	}
    	return conn;
    	}
    
    	public static Statement createStmt(Connection conn) {
    	Statement stmt = null;
    	try {
    	stmt = conn.createStatement();
    	} catch (SQLException e) {
    	e.printStackTrace();
    	}
    	return stmt;
    	}
    
    	public static ResultSet getRs(Statement stmt, String sql) {
    	ResultSet rs = null;
    	try {
    	rs = stmt.executeQuery(sql);
    	} catch (SQLException e) {
    	e.printStackTrace();
    	}
    	return rs;
    	}
    
    	public static void close(ResultSet rs) {
    	if (rs != null) {
    	try {
    	rs.close();
    	} catch (SQLException e) {
    	e.printStackTrace();
    	} finally {
    	rs = null;
    	}
    	}
    	}
    
    	public static void close(Statement stmt) {
    	if (stmt != null) {
    	try {
    	stmt.close();
    	} catch (SQLException e) {
    	e.printStackTrace();
    	} finally {
    	stmt = null;
    	}
    	}
    	}
    
    	public static void close(Connection conn) {
    	if (conn != null) {
    	try {
    	conn.close();
    	} catch (SQLException e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    	} finally {
    	conn = null;
    	}
    	}
    	}
    }


    xml的修改程序如下

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    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.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    
    /**
     * 
     * @author zhangwen.ctdc DOM更新與解析XML文檔
     */
    public class XmlAnalysis /* implements XmlDocumentInterface */{
    	private Document document;
    
    	public void init() {
    	try {
    	DocumentBuilderFactory factory = DocumentBuilderFactory
    	.newInstance();
    	DocumentBuilder builder = factory.newDocumentBuilder();
    	this.document = builder.newDocument();
    	} catch (ParserConfigurationException e) {
    	System.out.println(e.getMessage());
    	}
    	}
    
    	public void insertElementNode(String fileName, String nodeName,
    	String newElementName) {
    	document = parserXml(fileName);
    
    	NodeList nodeList = document.getElementsByTagName(nodeName);
    
    	for (int i = 0; i < nodeList.getLength(); i++) {
    	Element element = document.createElement(newElementName);
    	nodeList.item(i).appendChild(element);
    	}
    
    	createXml(fileName);
    
    	}
    
    	public void insertAttrNode(String fileName, String nodeName,
    	String newAttrName, String attrValue) {
    	document = parserXml(fileName);
    
    	NodeList nodeList = document.getElementsByTagName(nodeName);
    	for (int i = 0; i < nodeList.getLength(); i++) {
    	Element element = (Element) (nodeList.item(i));
    	element.setAttribute(newAttrName, attrValue);
    	}
    
    	createXml(fileName);
    	}
    
    	public void insertTextNode(String fileName, String nodeName, String textNode) {
    	document = parserXml(fileName);
    
    	NodeList nodeList = document.getElementsByTagName(nodeName);
    	for (int i = 0; i < nodeList.getLength(); i++) {
    	nodeList.item(i).appendChild(document.createTextNode(textNode));
    	}
    	createXml(fileName);
    
    	}
    
    	public void deleteElementNode(String fileName, String nodeName) {
    	document = parserXml(fileName);
    
    	NodeList nodeList = document.getElementsByTagName(nodeName);
    
    	while (nodeList.getLength() > 0) {
    	nodeList.item(0).getParentNode().removeChild(nodeList.item(0));
    	nodeList = document.getElementsByTagName(nodeName);
    	}
    
    	createXml(fileName);
    	}
    
    	public void updateNode(String fileName, String nodeName, String attrName,
    	String newAttrValue) {
    	document = parserXml(fileName);
    
    	NodeList nodeList = document.getElementsByTagName(nodeName);
    	for (int i = 0; i < nodeList.getLength(); i++) {
    	Element node = (Element) nodeList.item(i);
    	node.setAttribute(attrName, newAttrValue);
    	}
    
    	createXml(fileName);
    	}
    
    	private Document parserXml(String fileName) {
    	try {
    	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    	DocumentBuilder db = dbf.newDocumentBuilder();
    	Document document = db.parse(fileName);
    
    	System.out.println("-----------------------------------" + "解析完畢"
    	+ "----------------------------------------");
    	return document;
    
    	} catch (FileNotFoundException e) {
    	System.out.println(e.getMessage());
    	} catch (ParserConfigurationException e) {
    	System.out.println(e.getMessage());
    	} catch (SAXException e) {
    	System.out.println(e.getMessage());
    	} catch (IOException e) {
    	System.out.println(e.getMessage());
    	}
    	return document;
    	}
    
    	private void createXml(String fileName) {
    	try {
    	/** 將document中的內容寫入文件中 */
    	TransformerFactory tFactory = TransformerFactory.newInstance();
    	Transformer transformer = tFactory.newTransformer();
    	transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    	transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    	DOMSource source = new DOMSource(document);
    	StreamResult result = new StreamResult(new FileOutputStream(
    	fileName));
    	transformer.transform(source, result);
    	System.out.println("--------------------------------"
    	+ "更新 XML文件成功" + "-------------------------------------");
    	} catch (Exception exception) {
    	System.out.println("更新" + fileName + "出錯:" + exception);
    	exception.printStackTrace();
    	}
    
    	}
    }

    最后程序提供的接口與說明如下
    /**
     * @author GuoDi and ZhangWen
     *
     */
    public interface NodeInfoInterface {
     
     /** 
     * XML文檔 插元素入節點
     * @param time 時間
     * @param nodeName 標簽名
     * @param newElementName 新標簽
     */ 
     public void insertElementNode(String time, String nodeName,String newElementName);
    	
     /** 
     * @param time 時間
     * @param nodeName 標簽名
     * @param newAttrName 新屬性名
     * @param attrValue 新屬性值
     * XML文檔 插入屬性節點
     */ 
     public void insertAttrNode(String time,String nodeName,String newAttrName,String attrValue);
    	
     /** 
     * @param time 時間
     * @param nodeName 標簽名
     * @param textNode 文本
     * XML文檔 插入文本節點
     */ 
     public void insertTextNode(String time,String nodeName,String textNode);
    	
     /** 
     * @param time 時間
     * @param nodeName 標簽名
     * XML文檔 刪除所有對應元素節點
     */ 
     public void deleteElementNode(String time,String nodeName);
    	
     /** 
     * @param time 時間
     * @param nodeName 標簽名
     * @param newAttrName 新屬性名
     * @param attrValue 新屬性值
     * XML文檔 修改屬性節點內容
     */ 
     public void updateNode(String time,String nodeName,String newAttrName,String attrValue);
    	
    }


    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    clob保存為本地xml文件,修改后上傳

    clob保存為本地xml文件,修改后上傳:這兩天與小伙伴寫了一個小程序,實現的功能如下: 首先將數據庫的clob保存為本地的xml文件,然后對xml進行修改后上傳至數據庫 主要的難點如下: 1:clob文件的下載與上傳,其中保存為本地的文件要求是UTF-8格式 2:xml文件中節點的修改 clob的上傳與下載
    推薦度:
    標簽: 保存 文件 上傳
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美精品国产一区二区三区| 久久国产精品偷99| 久久久久人妻一区精品色| 久久久91人妻无码精品蜜桃HD| 亚洲国产精品不卡毛片a在线| 国产精品久久成人影院| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 午夜天堂精品久久久久| 国产成人AV无码精品| 国产AV午夜精品一区二区入口| 久久丝袜精品中文字幕| 亚洲国产精品一区第二页| 国产精品一二三区| 久久99国产精品成人欧美| 香蕉久久夜色精品升级完成| 青春草无码精品视频在线观| 国产91精品一区二区麻豆亚洲| 精品国产三级a在线观看| 亚洲av日韩精品久久久久久a| 免费观看四虎精品成人| 国产精品欧美亚洲韩国日本| 日韩欧精品无码视频无删节| 狠狠精品干练久久久无码中文字幕| 国产小呦泬泬99精品| 亚洲视频在线精品| 国产短视频精品一区二区三区| 国产精品乱码高清在线观看| 久久久久国产日韩精品网站| 永久免费精品视频| 午夜在线视频91精品| 无码日韩精品一区二区免费| 国产亚洲欧美精品永久| 国产国产精品人在线视| 久久成人影院精品777| 人妻少妇乱子伦精品| 日韩精品人妻系列无码专区| 白浆都出来了视频国产精品| 久久精品嫩草影院| 亚洲精品麻豆av| 亚洲福利精品一区二区三区| 下载天堂国产AV成人无码精品网站 |