2009-07-31 5 views
0

J'ai cette méthode pour insérer des données en utilisant jdbc qui va insérer la valeur en fonction du type java. Quelque chose comme ceci:Que se passerait-il si je définissais null dans une instruction préparée avec varchar toujours?

Object o = map.get(key); 

if(o == null) { 
    // setNull(index); 
} else if(o instanceof String) { 
    // setString(index, (String) o); 
} else if(o instanceof Timestamp) { 
    // setTimestampt(index, (Timestamp) o); 
} else if(o instanceof Integer) { 
    // setInt(index, (Integer) o); 
} 
    index++; 

Il a un problème bien (à côté est tout a commenté: P)

Si la valeur de o est nulle, je suis requiered d'utiliser la méthode "setNull(int, int)", mais Je dois préciser le type SQL:

... Remarque: Vous devez spécifier le type SQL du paramètre.

Mais ... Je ne sais pas le genre, donc je considère toujours utiliser VARCHAR (juste parce que)

setNull(index,Types.VARCHAR); . 

Que se passerait-il si je mets nulle dans la déclaration préparée avec varchar toujours?

J'utilise:

Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production 

Avec pilote Oracle JDB:

11.1.0.7.0-Production (ojdbc6.jar) 

Quelle serait une solution de rechange?

Répondre

2

Pourriez-vous interroger la base de données et obtenir le type de colonne via l'interface ResultSetMetaData?

+0

C'est un peu compliqué. Je fais des imbéciles avec un peu plus de dynamisme (sorte de) donc je n'ai pas vraiment la position exacte de la colonne. Mais au lieu de cela, je suis en train de définir la position en fonction du nom de la colonne (comme EMPL_ID peut-être la 20ème colonne, mais je le place comme le 1er sur mon pstmt .....) – OscarRyz

+0

Attendez, attendez ... ça commence à donne un sens .... mmmhhh .... laissez-moi le mâcher pendant un moment ... Que faire si je le fais (sélectionnez * de la table où 1 = 0; obtenir le ResultSetMetadata et obtenir le type en utilisant le nom de la colonne ... (o non, je vois une autre carte dans mon futur ...) ... – OscarRyz

+0

Vous ne pouvez pas obtenir en entrée la valeur et le type au lieu de la valeur que vous obtenez maintenant? – OpenSource

Questions connexes