Sistema l'indentatura del codice che fa schifo e usa il tag [*CODE] [*/CODE] senza asterischi per postare del codice.

Poi, problemi: s è StringBuffer, il metodo ritorna una stringa... magari sarebbe meglio fare

codice:
return r.toString();
Inoltre, definisci e inizializzi s all'interno del try e provi a ritornarlo al di fuori del try-catch dove "non è visibile".
Prova a correggere la situazione così:

codice:
public String query(String command)throws Exception { 
  StringBuffer s = new StringBuffer(); // a partire dal ResultSet 
  try { 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    String url="jdbc:odbc:Personale"; 
    Connection connection=DriverManager.getConnectionurl,"root","xxxxx"); 
    Statement statement = connection.createStatement(); 
    ResultSet r = statement.executeQuery(command); 
    if (r==null) {  //scusa ma a che serve?
    }
    
    ResultSetMetaData rmeta = r.getMetaData(); // costruisco il MetaData
    int numColumns=rmeta.getColumnCount();
    // Questo ciclo serve a stampare i nomi delle colonne 
    for(int i=1;i<=numColumns;++i) { 
      if(i<numColumns) {
        s.append(rmeta.getColumnName(i)+" | "); 
      }
      else {
        s.append(rmeta.getColumnName(i));
      }
    }  
    s.append("\n");
   // Questo ciclo per ogni riga stampa tutti i campi 
   while(r.next()) { 
     for(int i=1;i<=numColumns;++i) { 
       if(i<numColumns) {
         s.append(r.getString(i)+" | "); 
       }
       else {
         s.append(r.getString(i).trim()); 
       }
     } 
     s.append("\n");
   } 
  }
  catch(SQLException sqlEx) { 
    System.out.println(sqlEx);
  }
  catch (ClassNotFoundException cnfEx) {
    System.out.println(cnfEx);
  }
  return s.toString(); 
}