детали окружающей среды являются: -SQLXML не работает с Java
Appserver является: - Apache Tomcat 8 JRE 1.8 (последняя, как на март 01,2015) База данных MS-SQL Server 2008
Ниже приведен фрагмент кода: - произошло
<%@ page import="java.util.*,java.io.*,org.xml.sax.* ,javax.xml.*, org.w3c.dom.*, javax.sql.*, javax.xml.transform.*, javax.xml.transform.sax.* "%>
<%
java.sql.Connection con;
java.sql.Statement s;
java.sql.ResultSet rs;
java.sql.PreparedStatement pst;
con=null;s=null;pst=null;rs=null;
//String url= "jdbc:sqlserver://dB_IP/dBName";
String url= "jdbc:sqlserver://IPADDRESS;databaseName=dBName;integratedSecurity=false;user=userid;password=password;";
//String url= "jdbc:jtds:sqlserver://dB_IP/dBName";
String id= "user_id";
String pass = "password";
try{
//Class.forName("net.sourceforge.jtds.jdbc.Driver");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//con = java.sql.DriverManager.getConnection(url, id, pass);
con = java.sql.DriverManager.getConnection(url);
}catch(ClassNotFoundException cnfex){
cnfex.printStackTrace();
}
String sql = null,root1=null,root2=null,content_type="text/xml";
if(request.getParameter("sql")!=null){sql=request.getParameter("sql");}else{sql="select * from test_table for xml raw, xmldata";}
if(request.getParameter("root")!=null){root1=request.getParameter("root");root2="</"+root1+">";root1="<"+root1+">";}else{root1="<parse>";root2="</parse>";}
if(request.getParameter("contenttype")!=null){content_type=request.getParameter("contenttype");}else{content_type="text/xml";}
try{
out.println("inside try");
s = con.createStatement();
//SQLXML xmlVal = con.createSQLXML();
String query = "select top 100 * from table for xml raw, xmldata";
rs = s.executeQuery(query);
while (rs.next()) {
out.println("<br/>inside while " + query);
java.sql.SQLXML sqlxml = rs.getSQLXML(1);
//InputStream binaryStream = sqlxml.getBinaryStream();
/*
java.sql.SQLXML rssFeedXML = rs.getSQLXML(1);
javax.xml.parsers.DocumentBuilderFactory factory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
javax.xml.parsers.DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(rssFeedXML.getBinaryStream());
//System.out.println("RSS identifier: " + rssName);
//out.println(JDBCTutorialUtilities.convertDocumentToString(doc));
out.println((doc));
*/
/*
//http://docs.oracle.com/javase/6/docs/api/java/sql/SQLXML.html
Transformer identity = TransformerFactory.newInstance().newTransformer();
Source source = sqlxml.getSource(null);
Result result = new StreamResult(System.out);
identity.transform(source, result);
*/
}
out.flush();out = pageContext.pushBody();
out.println("Hi ");
}
catch(Exception e){e.printStackTrace();out.println("<br/>Caught " + e);}
finally{
if(rs!=null) rs.close();
if(s!=null) s.close();
if(con!=null) con.close();
}
%>
Ошибка компиляции: -
Caught com.microsoft.sqlserver.jdbc.SQLServerException: преобразование из ntext в SQLXML не поддерживается.
"и Требование к": - возвращает XML-документ из инструкции select. Приложение xml - это то, что требуется.
Если есть какие-либо предложения, а не такой подход, вы можете сообщить мне.
Дикая догадка о проблемах с конверсией, вы видели это? http://stackoverflow.com/questions/8334902/unable-to-cast-text-to-xml-in-sql-server – Koshinae