Re: Problem with bytea getBytes and setBytes

Поиск
Список
Период
Сортировка
От Barry Lind
Тема Re: Problem with bytea getBytes and setBytes
Дата
Msg-id 3F8439B9.5060602@xythos.com
обсуждение исходный текст
Ответ на Problem with bytea getBytes and setBytes  (Xavier Poinsard <xpoinsard@openpricer.com>)
Ответы Re: Problem with bytea getBytes and setBytes
Список pgsql-jdbc
Xavier,

You don't mention what versions you are using, but I suspect you are
using a 7.3 server.  If so this is a known bug in the 7.3 database.  The
bug is that the server is incorrectly doing character set translation
for binary values (i.e. the bytea data).  The work around for this bug
is to set the character set of your database to UNICODE.  Unfortunately
you can't change the character set after the database is created, so you
will need to recreate your database.

thanks,
--Barry


Xavier Poinsard wrote:
> I am trying to use a bytea column to store binary data, but the getBytes
> and setBytes methods aren't working as expected.
> I suspect a strange escaping occuring.
> I ran the following code :
>
> // insert test value
> PreparedStatement stmtInsert connection.prepareStatement("insert into
> test_blob (colblob) values(?)");
> byte testBytes[] = new byte[255];
> for (int i=0;i<255;i++)
>    testBytes[i]=(byte)(i-128);
> stmtInsert.setBytes(1,testBytes);
> int count = stmtInsert.executeUpdate();
> stmtInsert.close();
> stmtInsert = null;
>
> // read and compare test value
> PreparedStatement stmtSelect =connection.prepareStatement("select
> colblob from test_blob");
> ResultSet rs = stmtSelect.executeQuery();
> while (rs.next()){
>    byte resByte[]=rs.getBytes(1);
>    for (int i=0;i<255;i++){
>       if (resByte[i]!=testBytes[i])
>          System.out.println("Problem with byte "+i + " "+resByte[i]+"
> different from original " + testBytes[i] );
>       }
>    }
> rs.close();
>
> The results (truncated) :
> Problem with byte 32 -62 different from original -96
> Problem with byte 33 -96 different from original -95
> Problem with byte 34 -62 different from original -94
> Problem with byte 35 -95 different from original -93
> Problem with byte 36 -62 different from original -92
> Problem with byte 37 -94 different from original -91
> Problem with byte 38 -62 different from original -90
> ...
>
> Xavier Poinsard.
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faqs/FAQ.html
>




В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Xavier Poinsard
Дата:
Сообщение: Problem with bytea getBytes and setBytes
Следующее
От: Roger Bjärevall
Дата:
Сообщение: DatabaseMetaData.getTypeInfo() question