用Oracle,XSU做一个导出XML的程序.
从AREA这张表,取出数据,导出为XML,Orcle的版本是9.2.0..字符集是"US7ASCII".
Area这张表有一列是存储的中文(存进数据库之前,有经过转换).会抛出异常:
Exception in thread "main" oracle.xml.sql.OracleXMLSQLException: Cannot map Unicode to Oracle character.
at oracle.xml.sql.core.OracleXMLConvert.getXML(OracleXMLConvert.java:1015)
at oracle.xml.sql.query.OracleXMLQuery.getXMLString(OracleXMLQuery.java:267)
at oracle.xml.sql.query.OracleXMLQuery.getXMLString(OracleXMLQuery.java:221)
at oracle.xml.sql.query.OracleXMLQuery.getXMLString(OracleXMLQuery.java:198)
at procedure.OracleXmlParse.main(OracleXmlParse.java:32)程序的lib: jdbc14.jar,xmlparserv2.jar,xdb.jar,nls_charset12.jar,xsu12.jar.
代码:
public class OracleXmlParse {
public static void main(String[] args) {
try{
  DriverManagerDataSource dataSource = new DriverManagerDataSource   ("oracle.jdbc.driver.OracleDriver",
"jdbc:oracle:thin:@168.1.1.136:1521:imis","ims","ims");
String selectSQL = "select AREA_CODE,AREA_NAME,REGION_CODE,AREA_NAME_CN from AREA";
OracleXMLQuery query = new OracleXMLQuery(conn,selectSQL);
query.setEncoding("UTF-8");
String str = query.getXMLString();
System.out.println(str);
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}如果,selectSQL = "select AREA_CODE,AREA_NAME,REGION_CODE,from AREA".程序就没有问题.因为,这些列存储的都是英文字符.只有AREA_NAME_CN 这一列存的是中文.希望大家帮忙.小弟先谢谢了.