您的位置:首页 > 数据库 > Oracle

SQLServer解析xml到Oracle

2016-02-14 10:28 573 查看
写了一个程序:根据状态位读取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

/article/2972620.html 这种方法我没试过

代码实现

/**
* 写日志
* @param logpath  日志文件路径
* @param logtext  日志内容
*/
public void  WriteLog(String logpath,String logtext)
{
File file = new File(logpath);

try
{
//Writer out = new FileWriter(file,true);
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file, true),"utf-8");
out.write(logtext);
out.close();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}


写文件指定UTF-8编码

Q5 写好了程序,发布本地,测试通过,发布到远程服务器上,调用提示404 找不到资源。我用C#调用的java webservice。

未解决……

暂时就本地运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: