往數據庫裏面寫blob字段數據
思路上是這樣的,首先需要將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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.