[英]converting resultset to multidimensional string array
我试图在Java webservice中将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;
}
}
这是你的问题java结果集从1开始..所以改变你的getString方法就像这样。 并保持所有代码罚款。
while(rslt.next() && i < rowSize)
{
for(int j=0;j<columnSize;j++){
arr[i][j] = rslt.getString(j+1);
}
i++;
}
获取行数的一种简单方法是在您的情况下使用COUNT(*)
...
java.sql.ResultSet rslt = stmt.executeQuery("SELECT COUNT(*) FROM S_USERS");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.