Problema con query mySql

bircastri

Nuovo Utente
28 Mar 2009
16
0
0
Salve ragazzi, ho bisogno del vostro aiuto.

Ho creato un database con mySql e l'ho collegato alla mia applicazione in Java.

Ho eseguito anche delle query su di esso e tutto ok nessun problema.

Adesso ho bisogno però di eseguire una query che mi restituisca un numero intero o al max una stringa. Mentre con i metodi che io ho ottengo un vettore con al suo interno il valore che mi interessa.

Il metodo che io utilizzo è il seguente mi sapete indicare come modificare tale metodo affinche mi venga restituita una stringa o un numero intero ????????:

Codice:
 public Vector eseguiQuery(String query) {
      Vector v = null;
      String [] record;
      int colonne = 0;
      try {
         Statement stmt = db.createStatement();     // Creo lo Statement per l'esecuzione della query
         ResultSet rs = stmt.executeQuery(query);   // Ottengo il ResultSet dell'esecuzione della query
         v = new Vector();
         ResultSetMetaData rsmd = rs.getMetaData();
         colonne = rsmd.getColumnCount();
         
         System.out.println(colonne);
         while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet
            record = new String[colonne];
            for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
            v.add( (String[]) record.clone() );
         }
         rs.close();     // Chiudo il ResultSet
         stmt.close();   // Chiudo lo Statement
      } catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }

      return v;
   }
 
Ciao bircastri,

se vuoi ottenere un singolo valore, quindi si da per scontato che la query abbia generato un solo
risultato (una sola colonna, una sola riga) come ad esempio una query del genere:

Codice:
SELECT COUNT(*) FROM table WHERE ....

Quindi in questo caso basta effettuare un'estrazione dal Vector in questo modo:
Codice:
Vector v = eseguiQuery("SELECT COUNT(*) FROM table");
String [] rs = (String [])v.elementAt(0);
Integer count = Integer.parseInt(rs[0]);
System.out.println(count)
oppure puoi farti un'altro metodo per singoli valori:
Codice:
public String eseguiQuerySingoloValore(String query) {//
      String value = null;
      try {
         Statement stmt = db.createStatement();     // Creo lo Statement per l'esecuzione della query
         ResultSet rs = stmt.executeQuery(query);   // Ottengo il ResultSet dell'esecuzione della query
         ResultSetMetaData rsmd = rs.getMetaData();
         colonne = rsmd.getColumnCount();
         if(colonne>1) return null;//oppure puoi generare un'eccezione
         value = rs.next().getString(0);//Dato che è una sola riga basta un solo next()
         rs.close();     // Chiudo il ResultSet
         stmt.close();   // Chiudo lo Statement
      } catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }

      return value;
   }
 

Discussioni simili