Je travaille sur un projet où un utilisateur peut assembler les composants d'un cours de yoga. Il est réparti sur plusieurs fichiers et donc trop grand pour tout mettre ici. Le problème que j'ai est dans une méthode où j'ai besoin d'itérer sur les colonnes horizontales d'un ensemble de résultats qui retourne seulement une ligne à partir d'une base de données MySQL. Je comprends que je dois positionner le curseur sur la première ligne de l'ensemble de résultats (ce que je crois que je fais). Comme je n'ai qu'une seule ligne dans le jeu de résultats (ma variable est rset), je devrais utiliser rset.next() une seule fois, correct? Et puis je devrais être capable d'utiliser une simple boucle pour parcourir chaque colonne et ajouter la valeur à mon générateur de chaînes. Je souhaite ignorer la première colonne et ajouter chaque valeur suivante jusqu'à ce que la boucle atteigne les colonnes avec des valeurs nulles. Je ne trouve pas pourquoi mon code renvoie une exception "Avant le début du jeu de résultats".MySQL - Itérer sur des colonnes dans un ensemble de résultats
Quelqu'un peut-il trouver quelque chose de mal?
Je vais publier la méthode ainsi que la méthode appelée par cette méthode. (Je posté dans une autre question, mais je crois que la nature de ma question a changé, donc je suis de publier à nouveau cela avec un autre titre.)
// Query that returns the poses within a specific section
public String listPosesInSection(String tableName, String sectionName) {
String strList;
StringBuilder strBuilderList = new StringBuilder("");
// Run the query
try {
statement = connection.createStatement();
// Query will collect all columns from one specific row
rset = statement.executeQuery("SELECT * FROM " + tableName + " WHERE " + tableName + "_name = '" + sectionName + "'");
rset.next();
System.out.println("Column count is " + countColumnsInTable(tableName));
for (int i = 2; i <= countColumnsInTable(tableName); i++) {// First value (0) is always null, skip first column (1)
System.out.println("test");
strBuilderList.append(rset.getString(i) + "\n"); // This is line 126 as indicated in the exception message
}
} catch (SQLException e) {
e.printStackTrace();
}
strList = strBuilderList.toString();
return strList.replaceAll(", $",""); // Strips off the trailing comma
}
// Method for getting the number of columns in a table using metadata
public int countColumnsInTable(String sectionType) {
int count = 16;
try {
statement = connection.createStatement();
rset = statement.executeQuery("SELECT * FROM " + sectionType);
rsMetaData = rset.getMetaData();
count = rsMetaData.getColumnCount();
} catch (SQLException e) {
e.printStackTrace();
}
return count;
}
Et voici la première partie de l'exception message:
Column count is 26
java.sql.SQLException: Before start of result set
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:855)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5773)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5693)
at YogaDatabaseAccess.listPosesInSection(YogaDatabaseAccess.java:126)
at YogaSectionDesigner$5.actionPerformed(YogaSectionDesigner.java:231)
Ceci l'a fait! Merci beaucoup! –