SQLServer解析xml到Oracle

理工紫發表於2016-02-14

寫了一個程式:根據狀態位讀取SQLserver 中的一張表,下載其中一個欄位的值,這個值是XML型別的,然後把這個XML檔案的內容插入到另一Oracle資料庫,並更新SQLServer表的標誌位,表示這條記錄已經更新過。

我的思路是用java寫個webservice,然後再用C#寫個windows 服務每過30分鐘執行一次。用java寫業務是因為我覺得java操作oracle相對方便一點。用C#寫windows服務是是因為我只知道能用C#寫windows service,後臺靜默執行挺好。

看似簡單的程式,最後真正實現需求居然也花了3天時間,因為遇到了幾個小問題,並且還有未解決的。

接下來羅列一下遇到的問題。

Q1 java解析XML內容

已解決:參考http://www.ibm.com/developerworks/cn/xml/dm-1208gub/index.html

用的是第一種DOM方法

 

Q2 java jdbc連線Oracle資料庫問題

已解決:關鍵程式碼如下

String driverClassName = "oracle.jdbc.driver.OracleDriver";

String url = "jdbc:oracle:thin:@//192.168.101.22:1521/orcl";

注意,java程式碼裡的sql語句最後不要寫分號,否則會報錯 java.sql.SQLSyntaxErrorException: ORA-00911: 無效字元 。

 

Q3 java 怎麼寫一個webservice

已解決:

參考:http://javapapers.com/web-service/java-web-service-using-eclipse/

寫好java 類以後(Dynamic Web Project工程下),直接右擊新建webservice。

需要注意的是,要生成的方法必須是小寫字母開頭的,否則就無法呼叫了。java裡方法要小寫開頭!

我用java 寫好了一個Service類。接下來就是

 

Q4 下載好了XML檔案,然後在解析這個XML檔案時,發生了異常:

xml中1位元組的UTF-8序列的位元組1無效([字元編碼]Invalid byte 1 of 1-byte UTF-8 sequence

引起這個問題的原因是,java下載XML檔案預設編碼格式是GBK,而我們用DOM去解析xml檔案的時候,用的是UTF-8的方式去解析,編碼對不上,所以不能識別xml文件。

http://bbs.itheima.com/thread-29901-1-1.html

http://blog.csdn.net/zhangzhikaixinya/article/details/7727938 這種方法我沒試過

程式碼實現

 1     /**
 2      * 寫日誌
 3      * @param logpath  日誌檔案路徑
 4      * @param logtext  日誌內容
 5      */
 6     public void  WriteLog(String logpath,String logtext)
 7     {
 8         File file = new File(logpath);
 9         
10         try
11         {
12             //Writer out = new FileWriter(file,true);
13             OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file, true),"utf-8");
14             out.write(logtext);
15             out.close();
16         } catch (IOException e)
17         {
18             // TODO Auto-generated catch block
19             e.printStackTrace();
20         }
21     }
寫檔案指定UTF-8編碼

 

Q5 寫好了程式,釋出本地,測試通過,釋出到遠端伺服器上,呼叫提示404 找不到資源。我用C#呼叫的java webservice。

未解決……

暫時就本地執行。

 

相關文章