繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM