我正在尝试将Java Web服务中的ResultSet转换为String [] []。将Resultset转换为Strin [] []听起来非常愚蠢。我试图这样做的原因是因为.Web网络服务是从.Net调用的,它不理解ResultSet。我希望它会将ResultSet作为DataTable接受,但它没有成功。
我的一个问题是我试图测试我的Java Web服务的服务器很糟糕,我无法高效工作,所以我无法测试所有内容。
这是我的java webservice。我试图将其转换为String [] []但它返回null。当我尝试填充String [] []时,我想我做错了什么。
获取ResultSet的rowCount和columnCount是否正确?我做错了什么?
public String[][] getValues()
{
String[][] arr;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/MLS_J", "sa", "12345");
java.sql.Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
java.sql.ResultSet rslt = stmt.executeQuery("SELECT * FROM S_USERS");
// to get row count and column count
/////////////////////////////////////
int rowSize = 0;
try {
rslt.last();
rowSize = rslt.getRow();
rslt.beforeFirst();
}
catch(Exception ex) {
}
ResultSetMetaData rsmd = rslt.getMetaData();
int columnSize = rsmd.getColumnCount();
/////////////////////////////////////
arr = new String[rowSize][columnSize];
int i =0;
while(rslt.next() && i < rowSize)
{
for(int j=0;j<columnSize;j++){
arr[i][j] = rslt.getString(j);
}
i++;
}
rslt.close();
stmt.close();
conn.close();
return arr;
} catch (Exception e) {
return null;
}
}
答案 0 :(得分:3)
这是你的问题 java resultset从1开始..所以改变你的getString方法就像这样。并保持所有代码罚款。
while(rslt.next() && i < rowSize)
{
for(int j=0;j<columnSize;j++){
arr[i][j] = rslt.getString(j+1);
}
i++;
}
答案 1 :(得分:1)
获取行数的一种简单方法是为您的案例使用COUNT(*)
...
java.sql.ResultSet rslt = stmt.executeQuery("SELECT COUNT(*) FROM S_USERS");