J'essaie de renvoyer une valeur à partir d'une instruction select. Sa seule valeur car la valeur que je retourne provient de la colonne de clé primaire.
L'instruction SQL est SELECT itemNo FROM item WHERE itemName = 'astringvalue';
Ma méthode pour obtenir la valeur ressemble à ceci:
private String viewValue(Connection con, String command) throws SQLException
{
String value = null;
Statement stmt = null;
try
{
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(command);
while (rs.next())
value = rs.toString();
}
catch (SQLException e )
{
e.printStackTrace();
}
finally
{
if (stmt !=
null) { stmt.close(); }
}
return value;
}
J'ai aussi une méthode getConnection()
.
Voici ce que j'utilise pour appeler le viewValue
method:
if((action.getSource() == btnSave) ||(action.getSource() == btnSavePrint) )
{
String findItemNoCommand = "SELECT itemNo FROM `item` WHERE itemName = '" + itemList.getSelectedItem() + "'";
try
{
itemNo = viewValue(conn, findItemNoCommand);
}
catch (SQLException e)
{
e.printStackTrace();
}
System.out.println(itemNo);
}
Le code ci-dessus a été écrit pour une ButtonHandler
Pour le moment, pour la println
, je reçois un "com.mysql.jdbc.JDBC4ResultSet@1e72cae
". Je ne comprends pas ce qui se passe.
Ma question est .. que puis-je utiliser là-bas qui peut fonctionner?
Toute aide ou indice quant à ce que je fais mal est très apprécié.
Right now, for the println I'm getting a "com.mysql.jdbc.JDBC4ResultSet@1e72cae"
c'est parce que vous retournez l'objet ResultSet
ici, value = rs.toString();
De docs ,
Un objet ResultSet est une table de données représentant un résultat de base de données set, qui est généralement généré en exécutant une instruction qui interroge la base de données
Vous accédez aux données d'un objet ResultSet via un curseur. Notez que ce curseur n'est pas un curseur de base de données. Ce curseur est un pointeur qui pointe vers une ligne de données dans le ResultSet. Initialement, le curseur est positionné avant la première rangée. La méthode ResultSet.next déplace le curseur à la ligne suivante. Cette méthode retourne false si le curseur est positionné après la dernière rangée. Cette méthode appelle à plusieurs reprises le ResultSet.next avec une boucle while pour parcourir tous les fichiers données dans le ResultSet.
Vous devriez indiquer au jeu de résultats la valeur de la colonne,
value = rs.getString(1);
par index
value = rs.getString("itemNo");
ou par nom de colonne
Utilisez rs.getInt(1)
ou rs.getString(1)
pour extraire la valeur réelle de la ResultSet
. Ensuite, lisez un tutoriel JDBC.
changez le en
if(rs.next())
et
rs.getString("itemNo");
travaux !!!
Changement :
value = rs.toString();
À:
value = rs.getString(1);
rs.toString renvoie le résultat de la méthode toString
de Object ResultSet
.rs.getString(1)
vous donne le premier paramètre du jeu de résultats sous forme de String
.
Vous devez changer
while (rs.next())
value = rs.toString();
à
while (rs.next())
value = rs.getString("itemNo");
Essaye ça:
private String viewValue(Connection con, String command) throws SQLException
{
String value = null;
Statement stmt = null;
try
{
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(command);
while (rs.next())
value = rs.getString(1);
}
catch (SQLException e )
{
e.printStackTrace();
}
finally
{
if (stmt !=
null) { stmt.close(); }
}
return value;
}