Re: jdbc: getBinaryStream blocks on second call

Поиск
Список
Период
Сортировка
От Greg Speegle
Тема Re: jdbc: getBinaryStream blocks on second call
Дата
Msg-id 3A2A9A9D.9000803@10happythings.com
обсуждение исходный текст
Ответ на jdbc: getBinaryStream blocks on second call  (Ingo Luetkebohle <ingo@blank.pages.de>)
Ответы Re: jdbc: getBinaryStream blocks on second call
Список pgsql-interfaces
Within JDBC 1.0, it is required to access the columns in a result set 
row from left to right
and only once. Since the Postgres JDBC driver is not totally 2.0, it's 
not mandatory, but it
is a real good idea. I'd suggest storing the byte array somewhere so you 
don't have to
read it twice. If you have to read it twice, the only way to gaurantee 
that it works, is to
close the Statement and do it again.

Greg Speegle
Baylor University

Ingo Luetkebohle wrote:

> Hello,
> 
> I'm using the Postgresql-JDBC interface inside of a Jave Server Page
> and request a large object. When the page is first called, it works
> fine. When its called twice for the same database row, the
> ResultSet.getBinaryStream method blocks infinetely. This is on
> postgresql 7.0.3 (from RPM, on Linux, glibc).
> 
> The code is something like:
> 
>     dbc.setAutoCommit(false);
>     Statement st = dbc.createStatement();
>     ResultSet rs = st.executeQuery("SELECT contents FROM file WHERE id=" + id);
>     dbc.commit();
>     if(rs.next()) {
>         Reader r = new InputStreamReader(rs.getBinaryStream(1));
>         char buf[] = new char[2048];
>         for(int read = r.read(buf); read != -1; read = r.read(buf))
>             out.write(buf, 0, read);
> 
>         out.flush();
>         r.close();
>         is.close();
>     }
> 
> (yes, I known that the getBytes method is more convenient but the
> JspWriter class a JSP page provides can't write byte[], only char[])
> 



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

Предыдущее
От: Ingo Luetkebohle
Дата:
Сообщение: jdbc: getBinaryStream blocks on second call
Следующее
От: Ingo Luetkebohle
Дата:
Сообщение: Re: jdbc: getBinaryStream blocks on second call