2015-07-02 34 views
3

我使用下面的查询通过存储过程返回,通过存储过程中提取XML自动数据的Java(MS SQL)

SELECT * FROM test FOR XML AUTO 

这inturn给了我下面的结果,当我运行存储过程,

输出服务器:

<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
......... 

当我试图通过的prepareCall在java中执行的程序,我试图返回结果集,这应该返回一个XML字符串,但我正在此分裂像下面,

Record1: 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data 
Record 2: 1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test column1="data1" column2="data2" /> 
<test colu 
.............. and so on. 

下面是一段我的代码,

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
Connection connection = getConnection(); 
CallableStatement statement = connection.prepareCall("{call test_proc()}"); 
ResultSet rs = statement.getResultSet(); 

while(rs.next()){ 
     c++; 
     System.out.println("Record "+c+":"+rs.getString(1)); 
} 
System.out.println("Count : "+c); 

这inturn返回计数3,而不是1,但它是SQL Server工作正常,当我运行这个作为匿名程序。

我也试过getSQLXML(int column)的方法,但没用。

有人可以请你帮忙吗?

添加一点:我尝试了简单的查询执行(通过java代码) - SELECT * FROM test FOR XML AUTO并尝试获取结果集,但它仍提供相同的结果。 :(

+0

它看起来真的很奇怪,你确定你的存储过程返回1行? – prsmax

+0

是可以肯定的,在我的服务器返回一个列名为“XML-6457836- ..某个数字”的表格,它只包含一个记录,它是整个XML。 – Praveen

+0

期望的输出xml是什么? – Vaibs

回答

0

添加元素以及两列都在同一个表。

SELECT * FROM test FOR XML AUTO ,ELEMENTS 
+0

当你想把它作为单个形成的xm添加时,ELEMENTS是必需的我喜欢(列为孩子),但我不确定这会解决问题。 – Praveen