java.sql.Blob只是个接口而已,而且看来就是方便取数据用的,所以没有提供setBinaryStream的方法。你要存Blob字段,jdbc提供了另外的方法啊,如 PreparedStatement的setBinaryStream(int parameterIndex, InputStream x, int length)、setBytes(int parameterIndex, byte[] x)和setBlob(int i, Blob x) 。不过setBlob(int i, Blob x) 中实现Blob接口的类标准jdk中并没有,你就只有通过从jdbc Driver厂商开发提供了,例如oracle.sql.BLOB。 呵呵,因为那些厂商开发的冬冬,我都找不到详细的API文档,所以,都不知道怎么具体去构造,只好用前两种。
set use :pstmt = conn.PreparedStatement("insert table(blobfield,....) values(?,...)");pstmt.setObject(1,"blob String"); pstmt.execute(); get use: resultSet.getString("BlobField");that is all ,enjoy.
楼上的真是搞笑,用blob字段来存放字符串,杀鸡用牛刀啊。
要写入内容到Blob,请看下面的代码片段: ... ResultSet lobDetails = stmt.executeQuery( "SELECT content FROM webblob WHERE name = '"+name+"' FOR UPDATE"); if(lobDetails.next()) { Blob mapBlob = lobDetails.getBlob(1); OutputStream blobOutputStream = ((oracle.sql.BLOB)mapBlob).getBinaryOutputStream(); File mapFile = new File(filename); InputStream sampleFileStream=new FileInputStream(mapFile); byte[] buffer = new byte[10* 1024]; int nread = 0; while ((nread= sampleFileStream.read(buffer)) != -1) blobOutputStream.write(buffer,0,nread); sampleFileStream.close(); blobOutputStream.close(); System.out.println("Done insert Blob Data!");
PreparedStatement的setBinaryStream(int parameterIndex, InputStream x, int length)、setBytes(int parameterIndex, byte[] x)和setBlob(int i, Blob x) 。不过setBlob(int i, Blob x) 中实现Blob接口的类标准jdk中并没有,你就只有通过从jdbc Driver厂商开发提供了,例如oracle.sql.BLOB。
呵呵,因为那些厂商开发的冬冬,我都找不到详细的API文档,所以,都不知道怎么具体去构造,只好用前两种。
pstmt.execute();
get use:
resultSet.getString("BlobField");that is all ,enjoy.
...
ResultSet lobDetails = stmt.executeQuery(
"SELECT content FROM webblob WHERE name = '"+name+"' FOR UPDATE");
if(lobDetails.next()) {
Blob mapBlob = lobDetails.getBlob(1);
OutputStream blobOutputStream = ((oracle.sql.BLOB)mapBlob).getBinaryOutputStream();
File mapFile = new File(filename);
InputStream sampleFileStream=new FileInputStream(mapFile);
byte[] buffer = new byte[10* 1024];
int nread = 0;
while ((nread= sampleFileStream.read(buffer)) != -1)
blobOutputStream.write(buffer,0,nread);
sampleFileStream.close();
blobOutputStream.close();
System.out.println("Done insert Blob Data!");