Ne JDBC ResultSet getString toujours retourner une Chaîne de la représentation?
Je suis le formatage d'un ResultSet
à la sortie vers un fichier CSV. J'ai vraiment ne se soucient pas de la Java types de l'ensemble de résultats, au-delà peut-être de savoir si c'est du texte ou des chiffres.
Ne JDBC garantie getString donnera toujours une représentation de chaîne des valeurs,au moins pour les valeurs uniques (je n'ai pas besoin de me préoccuper au sujet de java.sql.Types.ARRAY
,java.sql.Types.JAVA_OBJECT
et quelques autres).
par exemple, étant donné resultSetMetaData.getColumnType(i)
est un Types.FLOAT
ou un Types.BIGDECIMAL
. va rs.GetString(i)
donnent toujours une Chaîne de caractères ?
c-t-il des cas getString lèvera une exception SQLException ou de retourner la valeur null lorsque un getXXX pourrait me donner de la valeur ?
Vous devez vous connecter pour publier un commentaire.
Yup, vérifiez ceci : http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html
Mais attention, différent du pilote JDBC peuvent produire des résultats différents.
Note that although the method getString is recommended for retrieving the SQL types CHAR and VARCHAR, it is possible to retrieve any of the basic SQL types with it. Getting all values with getString can be very useful, but it also has its limitations. For instance, if it is used to retrieve a numeric type, getString converts the numeric value to a Java String object, and the value has to be converted back to a numeric type before it can be operated on as a number. In cases where the value is treated as a string anyway, there is no drawback.
java.lang.String
est le dernier de la classe, il ne peut pas, jamais, d'une sous-classe. De sorte que toute méthode qui retourneString
renvoie une instance de la classejava.lang.String
, ou unnull
, ou lever une exception.Comme pour la conversion, c'est le pilote JDBC si il vous permettra de convertir de non-types de chaînes. Je pense que beaucoup vont avoir un problème avec elle.
Je voudrais vous suggérer de faire ceci à la place:
Qui devrait être plus robuste, depuis
getObject()
fera toujours la chose la plus sensée.SQLException