I have a Postgres table containing a column of type text[][]
. In JDBC code I've used a String array, but an exception told me that these two do not match. If there's no mapping between these types, could you suggest a Postgres type for a string arrays?
This is the code:
String list = "'{";
for(int i=0; i<array.length; i++) {
list+=prodotti[i]+",";
}
list+="}'";
preparedStm.setString(4, list);
To understand multi-dimensional PostgreSQL array types consider the following quote from the manual:
The current implementation does not enforce the declared number of
dimensions either. Arrays of a particular element type are all
considered to be of the same type, regardless of size or number of
dimensions. So, declaring the array size or number of dimensions in
CREATE TABLE
is simply documentation; it does not affect run-time
behavior.
Internally, the types text[]
, text[][]
are the same to PostgreSQL. If the column actually contains 2-dimensional text arrays, you'll have to match the dimensions in Java. But it could contain 1- or 3-dimensional arrays as well. PostgreSQL would allow it.
Also note that text
and character varying
(varchar
) are different data types in PostgreSQL (while doing largely the same when varchar
has no length modifier). Start by reading about character types in the manual.