我使用下面的查询通过存储过程返回,通过存储过程中提取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
并尝试获取结果集,但它仍提供相同的结果。 :(
它看起来真的很奇怪,你确定你的存储过程返回1行? – prsmax
是可以肯定的,在我的服务器返回一个列名为“XML-6457836- ..某个数字”的表格,它只包含一个记录,它是整个XML。 – Praveen
期望的输出xml是什么? – Vaibs