Здравствуйте, dshe, Вы писали:
D>Здравствуйте, Аноним, Вы писали:
А>>Ктонибудь пробовал запихивать блобы(файлы) в oracle из java и выуживать их потом оттудава?
А>>Был бы очень признателен, если бы кинули пример кода.
D>Вычитывать как обычно, а записывать нужно в 2 этапа:
D>1. вставить empty_blob()
D>2. вычитать этот blob select'ом "for update" и потом в него записывать.
D>вот несколько примеров того, как это можно сделать
D>
D>http://otn.oracle.com/sample_code/tech/java/sqlj_jdbc/files/advanced/LOBSample/Readme.html
D>
D>http://wamoz.com/JDBC_and_Oracle_LOB.asp
D>
D>http://forum.java.sun.com/thread.jsp?thread=525923&forum=31&message=2522468
D>D>public static void setBlob(Connection connection, InputStream inputStream, String tableName,
D>String columnName, String recordID) throws SQLException, IOException {
D> Statement statement = connection.createStatement();
D> ResultSet resultSet = statement.executeQuery("SELECT ID, "+columnName+" FROM "+tableName+" WHERE ID='"+recordID+"' FOR UPDATE");
D> resultSet.next();
D> oracle.sql.BLOB blobDest = (oracle.sql.BLOB) ((OracleResultSet) resultSet).getBlob(2);
D> byte[] buffer = new byte[ blobDest.getBufferSize() ];
D> OutputStream outputStream = blobDest.getBinaryOutputStream();
D> int length = -1;
D> while ((length = inputStream.read(buffer)) != -1) {
D> outputStream.write(buffer,0,length);
D> outputStream.flush();
D> }
D> statement.close();
D> outputStream.close();
D> inputStream.close();
D> resultSet.close();
D>}
D>
D>
D>http://www.idevelopment.info/data/Oracle/DBA_tips/Java/JAVA_20.shtml
D>
А для случая когда у нас есть plsql процедура и нужно воспользоваться ей?
Например есть процедура putBlob(blob_id IN number, blob_data IN number), как с помощью java метода можно передать в нее blob?