Oracle中存儲圖片的類型為BLOB類型,Java中如何將其讀取並轉為字符串?
一,讀取圖片轉為String類型: 需要使用Sun公司提供的Base64工具
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,讀取方法如下:
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中。
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中。
}
Oracle中存儲圖片的類型為BLOB類型,Java中如何將其讀取並轉為字符串?