En utilisant un PreparedStatement dans Java j'ai rencontré une situation étrange que je ne pourrais pas résoudre par l'intermédiaire de SO ou searchr sur le Web.
preStatement = connection.prepareStatement("SELECT ?, Date FROM " + paramTable + " WHERE [...]"); preStatement.setSsortingng(1, paramColumn); ResultSet rs = preStatement.executeQuery(); preStatement.close();
Le problème ici est que la colonne paramColumn
qui est sélectionnée dans la table paramTable
contient uniquement des valeurs float
-Type dans la database, cependant lorsque paramTable
PreparedStatement, la première colonne revient avec le type de database nvarchar
.
Par exemple si je SELECT MyValue, Date FROM ValueTable
le ResultSet
ressemblerait
________________________ | MyValue | Date | | MyValue | 2014-09-09 | | MyValue | 2014-09-10 | ....
alors que ça devrait ressembler
________________________ | MyValue | Date | | 26,567 | 2014-09-09 | | 28,623 | 2014-09-10 | ....
Lorsque j'exécute cette instruction SQL dans la console de gestion, j'obtiens les valeurs correctes sans problème mais en Java, la colonne contient toujours le nom de la colonne sous forme de Ssortingng
.
Juste concaténer le nom de la colonne dans la string de requête
preStatement = connection.prepareStatement("SELECT "+paramColumn+", Date FROM " + paramTable + " WHERE [...]");