2013-11-16 4 views
1

Я пытаюсь преобразовать ResultSet в String [] [] в Java webservice. Звучит очень глупо, чтобы преобразовать результат в Strin [] []. Причина, по которой я пытаюсь это сделать, заключается в том, что Java webservice вызывается из .Net, и он не понимает ResultSet. Я надеялся, что он принял ResultSet как DataTable, но это не сработало.преобразование результатов в многомерный массив строк

Одна из моих проблем заключается в том, что сервер, на котором я пытаюсь проверить свой веб-сервис Java, ужасен, и я не могу работать очень эффективно, поэтому я не могу проверить все.

это мой веб-сервис java. Я пытаюсь преобразовать его в String [] [], но он возвращает null. Я думаю, что я делаю что-то неправильно, когда пытаюсь заполнить String [] [].

Правильный ли способ получить rowCount и columnCount ResultSet? Что я делаю не так?

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

'catch (Exception ex) {}' и 'catch (Exception e) {return null; } ', вы должны избегать этих методов. Если возникает исключение, как бы вы узнали? Исключения очень полезны для программирования, а не просто проглатывают их в пустоту. Здесь вам не хватает важной информации. Не бойтесь исключений, они ваши друзья;) – m0skit0

ответ

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

Простой способ получить количество строк, чтобы использовать COUNT(*) для вашего случая ...

java.sql.ResultSet rslt = stmt.executeQuery("SELECT COUNT(*) FROM S_USERS"); 
Смежные вопросы