Oracle中存儲圖片的類型爲BLOB類型,Java中如何將其讀取並轉爲字符串?

一,讀取圖片轉爲String類型: 須要使用Sun公司提供的Base64工具sql

String str = ((Map) list1.get(0)).get("EINVOICEFILE").toString(); //經過查詢取出EINVOICEFILE的屬性值,EINVOICEFILE在數據庫中以(1:cat.png)這種varchar類型存儲(公司平臺須要可忽略)。數據庫


String[] filemap = str.split(":");
String id = filemap[0];  //分割字符串,拿到冒號前面的id,即 1數組


String sql_qr = "select content from hebfs.pt994 where id =?";
List list2 = DataBaseHelper.queryForList(sql_qr, new Object[] {id });  //content就是存儲圖片的blob數據,查詢出放到list中。

String strBase64 = null;
byte[] bytes = (byte[])(((Map) list2.get(0)).get("CONTENT"));  //這裏先從list中取出圖片,而後轉換成字節數組。

strBase64 = new BASE64Encoder().encode(bytes);  //最後調用base64的encode方法,把字節數組傳進去就能獲得須要的String數據。
System.out.println(strBase64);工具

二,若是數據庫中的blob字段存儲的是XML,讀取方法以下:code

String sql = " select EINVOICEXML from T_FSEITEMPLATE t where t.id = ? ";
List xml = DataBaseHelper.queryForList(sql, new Object[] { StringUtil.nullToEmpty(p.get("TEMPID"))});  //執行sql,結果存儲於List中。xml


List resultlist = new ArrayList();
for (int i = 0; i <xml.size() ; i++) {     //循環遍歷xml集合
Map map = new HashMap();
map = (Map) xml.get(i);
byte[] bytes = (byte[]) map.get("EINVOICEXML");  //把每一個值轉爲字節數組
String s = new String(bytes,"GBk");   //再轉爲String類型
map.put("EINVOICEXML",s);   //使用Map封裝。
resultlist.add(map);   //將封裝好的Map存儲到list中。
}圖片

相關文章
相關標籤/搜索