国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 14:44:55
文檔

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

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

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

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

首先將數(shù)據(jù)庫的clob保存為本地的xml文件,然后對xml進(jìn)行修改后上傳至數(shù)據(jù)庫

主要的難點如下:

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

2:xml文件中節(jié)點的修改

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 數(shù)據(jù)庫中的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; // 這邊需要設(shè)置一個空的字段,后面就不會出現(xiàn)空指針
	try {
	stmt.execute(sql1);
	} catch (SQLException e) {
	e.printStackTrace();
	}
	
	String sql2 = "select * from BD_PROCESS_DEF_VER s where s.ID=" + id;
	// 鎖定數(shù)據(jù)行進(jìn)行更新,注意“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是連接數(shù)據(jù)庫的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 {
	// 驅(qū)動程序就是之前在classpath中配置的JDBC的驅(qū)動程序的JAR 包中
	public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
	// 連接地址是由各個數(shù)據(jù)庫生產(chǎn)商單獨(dú)提供的,所以需要單獨(dú)記住
	public static final String DBURL = "jdbc:oracle:thin:@172.17.20.215:1521:BPMIDE";
	// 連接數(shù)據(jù)庫的用戶名
	public static final String DBUSER = "bpmduser";
	// 連接數(shù)據(jù)庫的密碼
	public static final String DBPASS = "bpmd";

	public static Connection getConn() {
	Connection conn = null;
	try {
	Class.forName(DBDRIVER);
	conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); // 2、連接數(shù)據(jù)庫
	} catch (ClassNotFoundException e) {
	e.printStackTrace();
	} // 1、使用CLASS 類加載驅(qū)動程序
	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中的內(nèi)容寫入文件中 */
	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文檔 插元素入節(jié)點
 * @param time 時間
 * @param nodeName 標(biāo)簽名
 * @param newElementName 新標(biāo)簽
 */ 
 public void insertElementNode(String time, String nodeName,String newElementName);
	
 /** 
 * @param time 時間
 * @param nodeName 標(biāo)簽名
 * @param newAttrName 新屬性名
 * @param attrValue 新屬性值
 * XML文檔 插入屬性節(jié)點
 */ 
 public void insertAttrNode(String time,String nodeName,String newAttrName,String attrValue);
	
 /** 
 * @param time 時間
 * @param nodeName 標(biāo)簽名
 * @param textNode 文本
 * XML文檔 插入文本節(jié)點
 */ 
 public void insertTextNode(String time,String nodeName,String textNode);
	
 /** 
 * @param time 時間
 * @param nodeName 標(biāo)簽名
 * XML文檔 刪除所有對應(yīng)元素節(jié)點
 */ 
 public void deleteElementNode(String time,String nodeName);
	
 /** 
 * @param time 時間
 * @param nodeName 標(biāo)簽名
 * @param newAttrName 新屬性名
 * @param attrValue 新屬性值
 * XML文檔 修改屬性節(jié)點內(nèi)容
 */ 
 public void updateNode(String time,String nodeName,String newAttrName,String attrValue);
	
}


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

文檔

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

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

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 亚欧激情 | 久久久噜噜噜www成人网 | 国产欧美日韩在线视频 | 日韩欧美国产高清 | 国产成人拍精品视频网 | 久久亚洲精品国产亚洲老地址 | 亚洲免费在线 | 国产亚洲精品va在线 | 不卡国产视频 | 国产一区二区日韩欧美在线 | 欧美国产日韩另类 | 手机在线观看国产精选免费 | 国产一区亚洲二区三区毛片 | 精品国产免费人成在线观看 | 国产男女无遮挡猛进猛出 | 欧美日韩极品 | 国产美女一级毛片 | 国产成人乱码一区二区三区 | 日本欧美一区二区三区不卡视频 | 成人欧美一区二区三区视频 | 日韩午夜免费电影 | 国产精品久久香蕉免费播放 | 国产日韩中文字幕 | 欧美国产日韩综合 | 亚洲欧美日韩第一页 | 国产精品久久久久一区二区 | 青青青国产在线观看 | 国精产品一区 | 日韩国产免费一区二区三区 | 亚洲欧美日韩综合在线播放 | 日韩精品第二页 | 亚洲码欧美码一区二区三区 | 国产欧美日韩综合精品一区二区 | 久久91精品久久91综合 | 国偷自产一区二区免费视频 | 亚洲欧美日韩天堂 | 在线播放一区二区 | 国产精品视频网站 | 国产精品1234区 | 亚洲视频入口 | 国内精品伊人久久久久妇 |