思路上是这样的,首先需要将blob字段数据转化为二进制字节流,
也就是这样实现的:
OutStream blobout = blob.getbinaryOutputStream();
然后得到blob字段的数据:通过选定的i值来得到,
Object obj = newData.get(rsmd.getColumnName(i));
最后把二进制字节流写入这个对象当中,具体的实现是这样的
blobout.write((File) obj).getBytes());
整个过程这样就结束了。具体的代码是这样的
if (rs.next()) {
rsmd = rs.getMetaData();
BLOB blob = null;
CLOB clob = null;
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
switch (rsmd.getColumnType(i)) {
case Types.BLOB :
blob = (BLOB) rs.getBlob(i);
if (blob != null) {
blob.trim(0);
OutputStream blobout =
blob.getBinaryOutputStream();
Object obj = newData.get(rsmd.getColumnName(i));
if (obj instanceof File) {
blobout.write(((File) obj).getBytes());
} else if (obj instanceof String) {
blobout.write(
(new BASE64Decoder()).decodeBuffer(
obj.toString()));
}
blobout.flush();
blobout.close();
}
break;
case Types.CLOB :
clob = (CLOB) rs.getClob(i);
if (clob != null) {
//System.out.println("CLOB*****");
clob.trim(0);
Writer clobWriter =
clob.getCharacterOutputStream();
if (newData
.get(rsmd.getColumnName(i))
.toString()
.equals("")) {
clobWriter.write(" ");
} else {
clobWriter.write(
newData
.get(rsmd.getColumnName(i))
.toString());
}
clobWriter.flush();
clobWriter.close();
}
break;
default :
break;
}
}
conn.commit();
return true;
}
也就是这样实现的:
OutStream blobout = blob.getbinaryOutputStream();
然后得到blob字段的数据:通过选定的i值来得到,
Object obj = newData.get(rsmd.getColumnName(i));
最后把二进制字节流写入这个对象当中,具体的实现是这样的
blobout.write((File) obj).getBytes());
整个过程这样就结束了。具体的代码是这样的
if (rs.next()) {
rsmd = rs.getMetaData();
BLOB blob = null;
CLOB clob = null;
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
switch (rsmd.getColumnType(i)) {
case Types.BLOB :
blob = (BLOB) rs.getBlob(i);
if (blob != null) {
blob.trim(0);
OutputStream blobout =
blob.getBinaryOutputStream();
Object obj = newData.get(rsmd.getColumnName(i));
if (obj instanceof File) {
blobout.write(((File) obj).getBytes());
} else if (obj instanceof String) {
blobout.write(
(new BASE64Decoder()).decodeBuffer(
obj.toString()));
}
blobout.flush();
blobout.close();
}
break;
case Types.CLOB :
clob = (CLOB) rs.getClob(i);
if (clob != null) {
//System.out.println("CLOB*****");
clob.trim(0);
Writer clobWriter =
clob.getCharacterOutputStream();
if (newData
.get(rsmd.getColumnName(i))
.toString()
.equals("")) {
clobWriter.write(" ");
} else {
clobWriter.write(
newData
.get(rsmd.getColumnName(i))
.toString());
}
clobWriter.flush();
clobWriter.close();
}
break;
default :
break;
}
}
conn.commit();
return true;
}