『壹』 java 關於blob類型問題
public void save(String vid,String title,String type,String user,String date,String context,String file) throws Exception
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "insert into news(v_id,title,type,person,inputtime,context,attach_docid) values('"+vid+"','"+title+"','"+type+"','"+user+"','"+date+"',EMPTY_BLOB(),'"+file+"')";
try {
DBJdbc dbjdbc = new DBJdbc();
conn = dbjdbc.getDBConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
String sql1 = "select context from news where v_id ='"+vid+"' for update"; // 使用"FOR UPDATE"得到表的寫鎖
rs = stmt.executeQuery(sql1);
if (rs.next()) {
BLOB blob = (BLOB) rs.getBlob(1); // 得到BLOB對象
OutputStream outout = blob.getBinaryOutputStream(); // 建立輸出流
InputStream in = new ByteArrayInputStream(strss.HTMLEncode(context).getBytes()); //字元串轉換為數據流
int size = blob.getBufferSize();
byte[] buffer = new byte[size]; // 建立緩沖區
int len;
while ((len = in.read(buffer)) != -1)
outout.write(buffer, 0, len);
in.close();
outout.close();
}
conn.commit();
stmt.close();
conn.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
希望能幫助到你
『貳』 java中blob類型是什麼類型
blob是資料庫二進制對象的類型,圖片,文本之類的.
java沒有特定類,非要說的話,就是個超大的位元組數組~
『叄』 java里怎麼判斷Blob類型是否為空
要看寫的Blob類型是什麼
是不是只的boolean類型還是聲明為Boolean的類
jdk1.4情況下
java里有基本類型的boolean和Boolean的包裝類。兩者是有區別的。至於什麼區別,我想樓主應該多看看書。
Blooean的聲明的變數是引用類型。這個引用將指向一個對象。該對象可以為空。例如:
Boolean b = null;
System.out.println(b);
列印的結果是 null;
當然如果聲明為基本類型,列印結果默認是false的,例如:
boolean b ;
System.out.println(b);
列印的結果是false
jdk5.0的情況沒做測試結果不清楚。估計結果和上面是一樣的。
但是因為在jdk5.0的情況下包裝類對象和基本類型似乎可以互相直接轉化例如:
int i = new Integer(5);
這種語句在1.4情況下編譯不過的,似乎5.0就可以。所以5.0以後的情況不確定
『肆』 JAVA怎麼把圖片從資料庫中調用出來
1 一半圖片都是把路徑存放在資料庫的 到時候取出路徑就可以了
2 在資料庫有blob格式可以存放圖片 以二進制流的方式取出來
<% String zjbm = CheckParam(request.getParameter("zjbm"),""); String zpSql = "select zp from tjjryxxx where sfzh = '"+zjbm+"'"; out.clear(); response.setContentType("image/jpeg"); response.setHeader("Content-Transfer-Encoding","base64"); Connection connection = null; PreparedStatement ps = null; ResultSet rs = null; Blob blob =null; byte[] data = null; try{ connection =getConn(); ps = connection.prepareStatement(zpSql); rs = ps.executeQuery(); while(rs.next()){ blob = (Blob)rs.getBlob("zp"); long nlen = blob.length(); int nsize = (int) nlen; data = blob.getBytes(1,nsize); OutputStream out1 = response.getOutputStream(); BufferedOutputStream bos =null; bos = new BufferedOutputStream(out1); bos.write(data,0,data.length); bos.close(); rs.close(); } }catch(Exception e){ e.printStackTrace(); } %>
『伍』 什麼java類型可以寫入BLOB類型中
public interface Blob
SQL BLOB 值在 JavaTM 編程語言中的表示形式(映射關系)。SQL BLOB 是內置類型,它將二進制大對象 (Binary Large Object) 存儲為資料庫表某一行中的一個列值。默認情況下,驅動程序使用 SQL locator(BLOB) 實現 Blob,這意味著 Blob 對象包含一個指向 SQL BLOB 數據的邏輯指針而不是數據本身。Blob 對象在它被創建的事務處理期間有效。
介面 ResultSet、CallableStatement 和 PreparedStatement 中的方法(如 getBlob 和 setBlob)允許編程人員訪問 SQL BLOB 值。Blob 介面提供一些方法來獲取 SQL BLOB (Binary Large Object) 值的長度、在客戶端實現 BLOB 值以及確定 BLOB 值中某一位元組樣本的位置。此外,此介面還有更新 BLOB 值的方法。
如果 JDBC 驅動程序支持該數據類型,則必須完全實現 Blob 介面的所有方法。
希望對你又幫助