29 Stimmen

Wandeln Sie java.util.List<String> in java.sql.Array um

Wie würden Sie eine java.util.List-Instanz in ein java.sql.Array umwandeln?

39voto

Bozho Punkte 570413

Verwenden Sie connection.createArrayOf(...)

Zum Beispiel:

final String[] data = yourList.toArray(new String[yourList.size()]);
final java.sql.Array sqlArray = connection.createArrayOf(typeName, data);
statement.setArray(position, sqlArray);

Wo typeName ist:

der SQL-Name des Typs, dem die Elemente des Arrays zugeordnet sind. Der typeName ist ein datenbankspezifischer Name, der der Name eines eingebauten Typs, eines benutzerdefinierten Typs oder eines von dieser Datenbank unterstützten Standard-SQL-Typs sein kann. Dies ist der Wert, der von Array.getBaseTypeName zurückgegeben wird


Wie in den Kommentaren erwähnt, handelt es sich um Java 1.6. Für ältere Versionen können Sie dies nicht auf eine treiberunabhängige Weise erstellen. Sie sollten nur Arrays abrufen können, nicht erstellen. Wenn Sie möchten, können Sie die implementierende Klasse aus Ihrem JDBC-Treiber instanziieren, aber dies ist nicht portabel.

3voto

Kris Jurka Punkte 31

Das Typ-Argument für createArrayOf ist der Elementtyp und nicht der Arraytyp, daher möchten Sie wahrscheinlich etwas wie "varchar" oder "text". VARIADIC ist ein Funktionsargumentmodifikator und kein Typspezifizierer.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X