2010-03-25 7 views
0

J'ai cette commande d'insertion où iam essayant d'insérer un numéro à prendre de la boucleinsérer le numéro dans oracle sql - en utilisant Jython

i=0 
for line in column: 
    myStmt.executeQuery("INSERT INTO REVERSE_COL 
(TABLE_NAME,COL_NAME,POS) values 
(,'test','"+column[i]+"','"+i+"'") 
i=i+1 

POS EST NUMÉRO DATATYPE

mais cela fonctionne si je coder en dur comme 1

i=0 
for line in column: 
    myStmt.executeQuery("INSERT INTO REVERSE_COL 
(TABLE_NAME,COL_NAME,POS) values 
(,'test','"+column[i]+"',1") 

J'ai essayé que i, + i + et une autre méthode, mais sa ne fonctionne pas toute suggestion comment résoudre ce problème.

Merci à tous.

Répondre

0

Je n'ai aucune expérience de Jython, mais j'essaierai toujours d'offrir mon approche et mes conseils personnels. Prenez-en ce que vous voulez.

La première chose que je voudrais examiner, et c'est peut-être quelque chose que quelqu'un d'autre sait, est la façon dont un nombre est concaténé à la chaîne. Je parle d'un fond C++ ici, mais un nombre i peut bien être converti en le caractère ASCII représentant cette valeur, et pas nécessairement le caractère que vous avez l'intention.

Par exemple, si i est 9, on peut placer une TAB dans la chaîne et non le nombre 9, ce qui serait une valeur ASCII 57.

Encore une fois, je ne vous dis pas ce EST la réponse ... mais c'est la première chose qui me vient à l'esprit. Bonne chance!

+0

J'ai eu une minute pendant le déjeuner pour regarder un peu autour, et je crois que c'est probablement le cas. Vous n'avez pas mentionné si le "ne fonctionne pas" impliqué recevant une erreur, ou simplement des données invalides. Mais je suppose que c'est l'ancien. S'il vous plaît voir http://en.wikibooks.org/wiki/Python_Programming/Variables_and_Strings#Combining_Numbers_and_Strings pour information Vous devrez peut-être utiliser la fonction 'str()'. – KevenK

+0

Keven, L'erreur était liée à un nombre invalide puisque la colonne cible a un type de données et que j'ai spécifié dans la question aussi quand j'utilise + i + est en string et j'ai essayé int (str (+ i +) aussi Mais rien ne semble fonctionner – kdev

+0

En utilisant 'int()' autour de 'str()', vous annulez effectivement le résultat de la fonction, vous le convertissez d'un nombre, d'une chaîne et d'un numéro. Il semble d'ici que vous avez spécifiquement besoin d'utiliser '... + colonne [i] +" ',' "+ str (i) +" '")' à la fin de votre requête. – KevenK

Questions connexes