29

How would you convert a java.util.List<String> instance into a java.sql.Array?

2 Answers 2

40

Use connection.createArrayOf(...)

For example:

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

Where typeName is:

the SQL name of the type the elements of the array map to. The typeName is a database-specific name which may be the name of a built-in type, a user-defined type or a standard SQL type supported by this database. This is the value returned by Array.getBaseTypeName


As noted in the comments, this is Java 1.6. For older versions you can't create this in a driver-independent way. You are only supposed to get arrays, not create them. If you want to, you can instantiate the implementing class from your jdbc driver, but this is non-portable.

Sign up to request clarification or add additional context in comments.

4 Comments

which is the current Java. If his is lower, he should've stated that.
yes you're right regarding the version of java, I just wrote my comment because I tried to look up the method in my bookmarked javadoc with is for 1.5 (as it is the version I have to use)...
It may be interesting to note that with an Oracle database, this method cannot be used. See the documentation here
The proposed code causes an error java.sql.SQLFeatureNotSupportedException, the answer is responded [stackoverflow.com/questions/24528337/…
3

The type argument to createArrayOf is the element type, not the array type, so you probably want something like "varchar" or "text". VARIADIC is a function argument modifier, not a type specifier.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.