如何将查询结果从Server返回到Client

时间:2011-08-31 17:00:32

标签: java mysql sql web-services

我有一个web服务,从客户端传递一些参数来对DB执行查询,服务器端应该执行查询并返回结果。因为结果可能是多行我将不得不在客户端使用它来显示我做的输出:

1.执行查询 2.获取结果的每一行并将其放入数组中 3.将数组转换为String并将其传递给客户端(将转换后的数组转换为String,因为它很简单)

但问题是它没有通过数组转换字符串但只传递用于初始化字符串的值,这里是代码

        String ris = "";
        String q;

        String beta = null;
        String one="";

        String errore = connetti();
        try {
              if (errore.equals("")) {
                    Statement st = conn.createStatement();
                    //ESECUZIONE QUERY
                    q = "SELECT DISTINCT nome FROM malattia WHERE eta='" + age + "' AND sesso='" + sexstr + "' AND etnia='" + etniastr + "' AND sintomi IN(" + tes + ")";


                    ResultSet rs = st.executeQuery(q);
                             if (!rs.last()) {
                                                 ris = "no";
                                                  } 
                                 //This is the part which i'm talking about
                                 else {

                                             //getRowCount is another class used to find out number of rows,I use it to declare an array which would contain the result of the query

                                             int two=getRowCount(rs);
                                             String[]  alpha= new String[two];
                                             //Loop through the resultstatement and put result from the column **nome** in the array **alpha**
                                             while(rs.next()){
                                                       alpha[i]=rs.getString("nome");
                                                         i++;
                                                             }
                                             //The value of ris which is empty, is returned 
                                             ris="";

                                             //instead of this one, where i convert the array **alpha** to String 
                                             ris=arrayToString(alpha,",");


                                 }
                             } 
                            else {
                              ris = errore;
                             }
      conn.close();


            } catch (Exception e) {
          ris = e.toString();
                              }
        return ris;

    }




             //returns the number of rows of **ris**
public static int getRowCount(ResultSet set) throws SQLException
{
   int rowCount;
   int currentRow = set.getRow();            // Get current row
   rowCount = set.last() ? set.getRow() : 0; // Determine number of rows
   if (currentRow == 0)                      // If there was no current row
      set.beforeFirst();                     // We want next() to go to first row
   else                                      // If there WAS a current row
      set.absolute(currentRow);              // Restore it
   return rowCount;
}

             //converts the array to String
public String arrayToString(String[] array, String delimiter) {
    StringBuilder arTostr = new StringBuilder();
    if (array.length > 0) {
    arTostr.append(array[0]);
    for (int i=1; i<array.length; i++) {
        arTostr.append(delimiter);
        arTostr.append(array[i]);
    }
    }
    return arTostr.toString();

提前多多谢谢!

1 个答案:

答案 0 :(得分:0)

在conn.close()之后你返回beta而不是ris。这可能是您遇到的行为的原因。但是,我不确定,因为我无法正确看到你如何打开和关闭花括号。