Обсуждение: Help with exception: java.lang.IllegalArgumentException: \0 not allowed

Поиск
Список
Период
Сортировка

Help with exception: java.lang.IllegalArgumentException: \0 not allowed

От
Venkatesh Babu
Дата:
Hello,

I was working with java.sql.PreparedStatement.

I'm getting an exception
"java.lang.IllegalArgumentException: \0 not allowed"
while using '\0' terminated strings as parameters for
the PreparedStatement. May I know whether usage of
such strings is not permitted? I'm using the
PreparedStatement.setString(int parameterIndex, String
x) function to set the parameters and I get the
exception here.

FYI, I'm using the JDBC driver pg74.213.jdbc2.jar, for
Postgres 7.4.

Thanks,
Venkatesh



__________________________________
Do you Yahoo!?
All your favorites on one personal page � Try My Yahoo!
http://my.yahoo.com

Re: Help with exception: java.lang.IllegalArgumentException:

От
Oliver Jowett
Дата:
Venkatesh Babu wrote:

> I'm getting an exception
> "java.lang.IllegalArgumentException: \0 not allowed"
> while using '\0' terminated strings as parameters for
> the PreparedStatement. May I know whether usage of
> such strings is not permitted? I'm using the
> PreparedStatement.setString(int parameterIndex, String
> x) function to set the parameters and I get the
> exception here.

You can't use \0 in text types (text, varchar, char, etc); this is a
limitation of the server and the server/client protocol. The driver is
just catching it early so you don't see strange behaviour later.

In general, you don't need to terminate Java strings with \0 at all. If
you really do need to store a literal NUL, consider using a bytea column
and PreparedStatement.setBytes() instead.

-O