I am querying the information_schema.columns
table in my PostgreSQL database. Using a table name, the result set finds all the column names, type, and whether it is nullable (except for the primary key, 'id'). This is the query being used:
SELECT column_name, is_nullable,data_type FROM information_schema.columns WHERE lower(table_name) = lower('TABLE1') AND column_name != 'id' ORDER BY ordinal_position;
I have a string array for each of these results and I am trying to use the ResultSet method getArray(String columnLabel)
to avoid looping through the results. I want to store the returned Arrays in the string arrays, but get a type mismatch error
Type mismatch: cannot convert from Array to String[]
Is there a way to convert or typecast the SQL Array object to a String[]?
Relevant Code:
String[] columnName, type, nullable; //Get Field Names, Type, & Nullability String query = "SELECT column_name, is_nullable,data_type FROM information_schema.columns " + "WHERE lower(table_name) = lower('"+tableName+"') AND column_name != 'id' " + "ORDER BY ordinal_position"; try{ ResultSet rs = Query.executeQueryWithRS(c, query); columnName = rs.getArray(rs.getArray("column_name")); type = rs.getArray("data_type"); nullable = rs.getArray("is_nullable"); }catch (Exception e) { e.printStackTrace(); }
Add elements to it. Create an empty array with size of the created Set. Convert the Set to an array using the toArray() method, bypassing the above-created array as an argument to it. Print the contents of the array.
Use ArrayList (or any other Collection type you prefer) instead of Array. For array you would have to run extra query determinate number of elements that will come out to give you array size. That you would have to initialize array with that size and only after that you could … Do NOT use scriptlets in JSP.
Use:
Array a = rs.getArray("is_nullable"); String[] nullable = (String[])a.getArray();
As explained here
Array
is SQL type, getArray()
returns an object to cast to java array.
Generalize the Array to Object
Object[] type; //this is generic can use String[] directly Array rsArray; rsArray = rs.getArray("data_type"); type = (Object [])rsArray.getArray();
Use it loop as string:
type[i].toString();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With