L'attribution SELECT COUNT(*) Résultat de la Requête à une Variable Java
J'ai eu des problèmes en assignant le résultat d'un SELECT COUNT(*)
requête à une variable Java. Je suis l'affectation du résultat de la requête à un jeu de résultats. Alors, j'essaie de récupérer la valeur de nombre et de l'affecter à une variable. J'obtiens une erreur lorsque vous tentez de le faire.
Voici mon code:
ResultSet rc1 = null;
int rowCount1;
Statement stat = conn.createStatement();
rc1 = stat.executeQuery("SELECT COUNT(*) AS rowcount1
FROM Signal WHERE SignalId = 1;");
if (rc1.next())
rowCount1 = rc1.getInt("rowcount1");
Puis j'obtiens l'erreur suivante:
java.sql.SQLException: aucune colonne de ce type: 'rowcount1'
au org.sqlite.RS.findColumn(RS.java:116)
au org.sqlite.RS.getInt(RS.java:219)
Apparemment, le problème, c'est quand on essaye d'affecter ce qui se passe après à une variable. Je ne trouve pas beaucoup d'informations sur les requêtes contenant AUSSI. Je reçois la même erreur avec les requêtes où je ne suis pas de comptage. Par exemple, si j'ai le code suivant:
ResultSet rp1 = null;
int rowCount1 = 0;
Statement stat = conn.createStatement();
rp1 = stat.executeQuery("SELECT Signal AS Sig1
FROM Observations WHERE SignalId = 1;");
if (rp1.next())
rowCount1 = rp1.getInt("rowcount1");
Je reçois la même erreur avec le code précédent (qui n'colonne: rowCount1). Ce que je fais de mal? Je suis en veillant à la table, je suis de lecture contient les valeurs correctes de sorte que la requête doit être vrai.
SELECT COUNT(*) FROM Signal WHERE SignalID = '12345'
, lorsque vous tirez sur la COUNT(*)
valeur elle-même?avez-vous essayé getInt(0)?
merci pour le montage, mais la prochaine fois, prenez le temps de nettoyer le code ainsi afin de ne pas exécuter hors de l'écran.......
votre question est balisé
mysql
mais le pilote ressemble sqlite org.sqlite.RS.findColumn
. pouvez-vous vérifier votre pilote à la fois.getInt(0) ne fonctionne pas @Srinivas -- la colonne de numérotation commence à 1.
OriginalL'auteur Ruth | 2011-04-26
Vous devez vous connecter pour publier un commentaire.
Simplement utiliser
rp1.getInt(1)
-- retourne la première colonne dans le jeu de résultats comme un int, qui est ce que vous voulez.Si vous avez plus de valeurs d'usage
rp1.getInt(2)
pour obtenir la deuxième valeur, etc...Désolé, j'ai découvert que je suis entré dans quelque chose de mal dans le deuxième exemple.
vous pouvez toujours utiliser la colonne d'indexation plutôt que les noms de colonnes, quel que soit le nombre de colonnes de votre requête retourne, si c'est ce que tu veux dire.
Ok, laissez-moi essayer certaines de ces suggestions. Merci
L'erreur a disparu. Sembler comme il est préférable de s'en tenir à la colonne indices. Merci à tous.
OriginalL'auteur Liv
Le deuxième exemple est une erreur:
échouera toujours parce que vous n'avez pas de
rowcount1
colonne dans votre requête.select count(*) as rowcount1
crée une colonne appelée "rowcount1' dans la requête. Java ne semble pas permettre d'obtenir nommé colonnes à partir d'une requête, mais c'est une autre affaire.Je sais.. je faisais allusion à la deuxième exemple. Requête:
SELECT Signal AS Sig1 FROM Observations WHERE SignalId = 1;
Et puis il n'est un:rp1.getInt("rowcount1");
mais il n'y avait pas rowcount1 dans la requête d'origine.Je vois, de la modification de votre réponse, pour déverrouiller le vote et fixe le vote.
OriginalL'auteur sitnik