MySQL LOB(large object)是一種特殊的數據類型,用來存儲較大的二進制數據,如圖片、音樂、視頻等。LOB類型包括BLOB(二進制LOB)和CLOB(字符型LOB)兩種。
LOB數據處理需要使用MySQL的LOBBYTES和LOCATE函數。但是,MySQL實現了一個LOBhandler接口,可以在JDBC中將LOB類型轉換為普通的Java對象。
// 創建一個LOBhandler preparedStatement.setBlob(1, image); LOBHandler lobHandler = new MySQLLobHandler(); InputStream result = lobHandler.getBlobAsBinaryStream(rs, 1); byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead = result.read(buffer)) != -1) { // 對數據進行處理 } result.close();
LOBhandler接口還包括其它一些方法,如getBlobAsBytes、getClobAsString等,可以根據需要選擇使用。這個接口是JDBC的一部分,在MySQL Connector/J中提供了實現。
在使用LOB類型存儲數據時,需要注意數據大小的限制。LOB類型的最大長度是4GB,但實際可用空間可能受到MySQL配置和硬件限制的影響。