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 по дате отправления: