Chúng tôi có hai thiết lập giống hệt nhau về sản phẩm của chúng tôi ở phần cuối của chúng tôi. Một thiết lập đang hoạt động bình thường nhưng thiết lập khác đã gặp sự cố bên dưới.Java + ResultSet.getObject()
Chúng tôi đang bắn một truy vấn trên cơ sở dữ liệu và truy vấn như:
String query = select col1_name, col2_name, col3_name from table_1;
PreparedStatement l_statement = null;
Connection con = "<connection-string>";
l_statement = con.prepareStatement(query);
Resultset l_rs = l_statement.executeQuery();
Bây giờ col1 ("column1") datatype là "SYS.XMLTYPE" mã để lấy cột dữ liệu là:
Object obj = null;
obj = l_rs.getObject(1);
String xmlStr = null;
if(obj instanceof XMLTYPE){
...
} lse if (obj instanceof XMLTYPE){
...
} else if (obj instanceof java.sql.SQLXML){
xmlStr = ((SQLXML)obj).getString();
}
việc kiểm soát các chương trình đi vào cuối else if, tức là
xmlStr = ((SQLXML)obj).getString();
Bây giờ khi chúng tôi kiểm tra giá trị của xmlStr, nó chứa các ký tự rác như sau:
Ÿcž(too many junk characters.)
Trên một thiết lập đoạn mã này hoạt động chính xác và ngược lại, chuỗi xml cung cấp các ký tự rác, lý do gì?
Rõ ràng một điều gì đó khác :-) Bạn đã xác minh mã hóa DB, mã hóa máy chủ, v.v ...? –
Bạn có thể cho chúng tôi thấy sự khác biệt của các thiết lập của bạn không? –
nếu ** hai thiết lập giống nhau **, hãy thử trao đổi các máy (thiết lập bị lỗi trên máy đang hoạt động và ngược lại). _reason cho một gợi ý như vậy: kiểm tra xem cơ sở dữ liệu có bị hỏng không. –