2009-09-13 10 views
0

Lorsque j'exécute la requête suivante sur une base de données contenant une table "comm_list" et un champ "sr_no" de type "Int" dans la table "comm_list", j'obtiens le résultat correctImpossible d'obtenir ResultSet de la base de données MySql

SELECT MAX (sr_no) FROM liste_commandes;

La requête ci-dessus est pour obtenir le maximum. numéro de série. de sorte que lorsque j'entre un nouvel enregistrement, j'entre le (numéro de série + 1) dans le coloum "sr_no" pour que je puisse suivre le non. des enregistrements dans la base de données. Je sais que cela peut être fait automatiquement en faisant le champ "sr_no" clé primaire et le faire à auto increment lui-même chaque fois qu'un nouvel enregistrement est entré mais j'ai une autre clé primaire dans la table déjà je ne peux pas faire cela Champ "sr_no" en tant que clé primaire.

Lorsque j'exécute la requête ci-dessus de mon programme java pour obtenir le maximum. numéro de série, le jeu de résultats renvoyé ne contient aucune entrée. Je ne comprends pas où est le problème. Je stocke des enregistrements du programme java à la base de données en utilisant le pilote jdbc.

Voici l'extrait de code de mon programme Java.

  PreparedStatement getSerial = con.prepareStatement("select max(sr_no) from comm_list"); // "con" is the connection with the database 
      getSerial.execute(); 
      ResultSet rs = getSerial.getResultSet(); 
      System.out.println(rs.toString()); 
      System.out.println(rs.getFetchSize()); // output - 0 
      srNo = rs.getInt(1) + 1; 
      System.out.println(srNo); 

Répondre

2

Essayez d'utiliser la méthode next, pour déplacer le résultat déterminé fixé à la ligne suivante et revenir s'il est une rangée suivante:

PreparedStatement getSerial = con.prepareStatement("select max(sr_no) from comm_list"); // "con" is the connection with the database 
getSerial.execute(); 
ResultSet rs = getSerial.getResultSet(); 
if(rs.next()) { 
    srNo = rs.getInt(1) + 1; 
} 
System.out.println(srNo); 
2

ResultSets doivent être itérés pour être utilisés. Ceci est mentionné dans le javadocs. Les javadocs sont toujours une référence inestimable pour ces API.

Vous devez appeler la méthode suivante() de ResultSet pour obtenir le premier résultat.

Il y a quelques exemples obtenir commencé here.

0
Statement getSerial = con.createStatement(); 
ResultSet rs = getSerial.executeQuery("select max(sr_no) from comm_list"); 
if(rs.next()){ 
    srNo = rs.getInt(1) + 1; 

System.out.println(srNo); 
Questions connexes