【java web】--ojdbc匯入xml資料
我們存取資料,常用的是從jsp頁面獲取資料,通過控制元件觸發事件,傳值到後臺,持久化到資料庫。最近學了一種特別好玩的新的,就是把資料以xml檔案的形式,匯入到資料庫中。實現效果就是將如下的xml檔案的節點資料,通過java程式碼,直接匯入到已經建立好的T_XML資料表中。
一、程式碼目錄結構
DbUtil.java : 連線資料庫的工具類
TestXMLImport.java : 程式臺程式碼
dom4j-1.6.1.jar : dom4j是一個Java的XML API,類似於jdom,用來讀寫XML檔案
jaxen-1.1-beta-6.jar : Jaxen是一個Java編寫的開源的XPath庫。這是適應多種不同的物件模型,包括DOM,XOM,dom4j和JDOM。也可以作為介面卡,轉換Java位元組程式碼或XML的Java bean為xml,可以使用XPath查詢這些樹。
ojdbc14.jar : ojdbc是oracle資料庫提供的thin驅動
test01.XML : 匯入的xml資料檔案
二、程式碼詳情
TestXMLImport.java
package test_xmlImport;
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* @ClassName:TestXMLImport
* @Description:TODO
* @author wm
* @date 2016年1月22日上午8:48:46
*/
public class TestXMLImport {
public static void main(String[] args){
String sql="insert into T_XML(NUMERO,REPOSICION,NOMBRE,TURNOS)values(?,?,?,?)";
Connection conn=null;
PreparedStatement pstmt=null;
try {
conn=DbUtil.getConnection();
pstmt=conn.prepareStatement(sql);
//建立解析器,讀取xml並賦值給文件
Document doc= new SAXReader().read(new File("D:/MyEclipse2014--wm/workspacewm/test_xmlImport/xml/test01.XML"));
//查詢節點
List itemList=doc.selectNodes("/ACCESOS/item/SOCIO");
//遍歷節點
for(Iterator iter=itemList.iterator();iter.hasNext();){
Element el=(Element)iter.next();
//獲取當前元素的內容
String numero=el.elementText("NUMERO");
String reposicion=el.elementText("REPOSICION");
String nombre=el.elementText("NOMBRE");
List turnosList=el.elements("TURNOS");
//初始化StringBuffer空物件,執行緒安全
StringBuffer sbString=new StringBuffer();
//遍歷turnosList下面的子標籤,並獲取文字,拼接
for(Iterator iter1=turnosList.iterator();iter1.hasNext();){
Element turnosElt=(Element)iter1.next();
String lu=turnosElt.elementText("LU");
String ma=turnosElt.elementText("MA");
String mi=turnosElt.elementText("MI");
String ju=turnosElt.elementText("JU");
String vi=turnosElt.elementText("VI");
String sa=turnosElt.elementText("SA");
String doo=turnosElt.elementText("DO");
sbString.append(lu+","+ma+","+mi+","+ju+","+vi+","+sa+","+doo);
}
//繫結sql,插入條件,執行sql語句
pstmt.setString(1, numero);
pstmt.setString(2, reposicion);
pstmt.setString(3, nombre);
//建立新的String物件
pstmt.setString(4, sbString.toString());
//批量新增到資料庫
pstmt.addBatch();
}
//批量執行更新到資料庫
pstmt.executeBatch();
System.out.println("將XML匯入資料庫成功!");
} catch (Exception e) {
e.printStackTrace();
}finally{
DbUtil.close(pstmt);
DbUtil.close(conn);
}
}
}
DbUtil.java
package test_xmlImport;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
public class DbUtil {
public static Connection getConnection(){
Connection conn=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String username="drp1";
String password="drp1";
conn=DriverManager.getConnection(url,username,password);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn){
if(conn !=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void close(Statement pstmt){
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
三、除錯小技巧-Expressions
除錯的過程中,可以通過新增表示式,可以檢視某節點的屬性值。
Expressions View
右鍵Add Watch Expressions
輸入變數get屬性
http://write.blog.csdn.net/postedit
四、總結
|
優點 |
缺點 |
程式碼結構: |
可讀性好, 結構嚴謹, 簡單, 搜尋效率高 |
插入修改難, 資料量大的時候轉換成二進位制影響效率, 對資料的管理不夠完善
|
對外互動: |
平臺間資料交換、與資料庫互動方便, 可以選擇性更新 |
平臺間通訊規範需要定義 |
物件導向: |
資料顯示分離 |
|
相關文章
- 將XML匯入資料庫XML資料庫
- xml與資料庫中資料的匯入匯出XML資料庫
- 使用xml檔案,做資料的匯入,匯出 (轉)XML
- 如何建立+管理maven、匯入web專案、xmlMavenWebXML
- java 從EXCEL匯入到資料庫JavaExcel資料庫
- 如何用Java將excel資料匯入資料庫JavaExcel資料庫
- 如何將 JSON, Text, XML, CSV 資料檔案匯入 MySQLJSONXMLMySql
- java怎麼將excel表格資料匯入資料庫JavaExcel資料庫
- 資料庫 MySQL 資料匯入匯出資料庫MySql
- 資料泵匯出匯入
- Oracle 資料匯入匯出Oracle
- mysql資料匯入匯出MySql
- mysql資料匯出匯入MySql
- Oracle資料匯入匯出Oracle
- 利用Java進行MySql資料庫的匯入和匯出JavaMySql資料庫
- 大文字資料,匯入匯出到資料庫資料庫
- MySQL入門--匯出和匯入資料MySql
- 資料匯入SQLLDRSQL
- sqoop資料匯入匯出OOP
- 資料匯入匯出EXP/IMP
- MongoDB資料匯入與匯出MongoDB
- mysqldump匯入匯出表資料MySql
- exp/imp匯出匯入資料
- postgresql 資料匯入和匯出SQL
- 資料庫的匯入匯出資料庫
- 資料泵的匯入匯出
- mysql 資料庫匯入匯出MySql資料庫
- 資料泵匯出匯入表
- MySQL資料庫匯入匯出MySql資料庫
- 資料匯入終章:如何將HBase的資料匯入HDFS?
- 資料泵匯出匯入資料標準文件
- servlet接收xml資料流[java]ServletXMLJava
- maven建立Java 和 Web Project, 並匯入EclipseMavenJavaWebProjectEclipse
- Solr json,xml等檔案資料匯入(新增索引)linux下操作SolrJSONXML索引Linux
- java程式碼實現excel檔案資料匯入JavaExcel
- 【匯入匯出】將資料匯入到其他使用者
- Mongodb資料的匯出與匯入MongoDB
- EasyPoi, Excel資料的匯入匯出Excel