Vous ne pouvez pas lier directement. Il existe un moyen de passer un tableau en tant que paramètre. Je n'ai aucune idée de ce que vous voulez en faire du côté de la base de données, cela ne vous aidera peut-être pas.
Fondamentalement, vous devez créer un type de table imbriqué dans la base de données; construire un objet Java basé sur ce type, contenant les données de votre tableau; et passez cela comme paramètre.
Si vous avez créé ces objets dans la base de données:
CREATE OR REPLACE TYPE my_nested_table IS TABLE OF VARCHAR2(20);
CREATE TABLE my_table (a my_nested_table) NESTED TABLE a STORE AS my_table_a;
Ensuite, vous pouvez écrire du code Java comme ceci:
String[] insertvalues = { "a", "b", "c" };
PreparedStatement p = conn.prepareStatement("INSERT INTO my_table VALUES(?)");
ARRAY insertParameter = new ARRAY(a_desc, conn, insertvalues);
p.setArray(1, insertParameter);
p.execute();
Les résultats Oracle ressemblent à ceci:
dev> select * from my_table;
A
--------------------------------------------------------------------------------
MY_NESTED_TABLE('a', 'b', 'c')
En quelle capacité? À quoi ressemble votre déclaration (avec des espaces réservés)? Je doute qu'il y ait une solution générale à cela puisque 1) la longueur de la liste variera et 2) le nombre d'espaces réservés dans votre déclaration ne le sera probablement pas. De plus, toutes les listes ne sont pas commandées. –
Matt, tous les objets qui implémentent java.util.List fournissent une opération get (int) qui récupère l'objet à l'index spécifié. Il fournit également un itérateur. Les deux sont non-optionnels: l'ordre peut être impair, mais une commande existe. Donc, toutes les implémentations java.util.List * sont * commandées ... – MetroidFan2002
... et, en Java, List fait généralement référence au contrat d'interface java.util.List. – MetroidFan2002