将结果集转换为多维字符串数组

时间:2013-11-16 16:58:01

标签: java arrays web-services resultset

我正在尝试将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;
    }
}

2 个答案:

答案 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");