欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

bytea對應oracle

夏志豪1年前7瀏覽0評論
< p>Bytea是PostgreSQL數據庫中一個存儲二進制數據的數據類型,它可以存儲任意格式的數據,如圖像、視頻、壓縮文件等等。雖然在Oracle數據庫中缺少bytea類型,但可以通過BLOB類型來替代,本文將介紹如何在Oracle中存儲和使用二進制數據類型.< /p>< p>一般而言,我們使用java程序來操作Oracle數據庫,所以這里會用到jdbc中的PreparedStatement對BLOB類型進行插入操作。如下是一個簡單的插入BLOB數據的示例:< /p>< pre>Connection conn = DriverManager.getConnection(url, user,password); String sql = "INSERT INTO tablename(id, img) values(?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 1); FileInputStream fin = new FileInputStream(new File("xxx.jpg")); pstmt.setBinaryStream(2, fin, (int) file.length()); pstmt.executeUpdate(); pstmt.close(); fin.close(); conn.close();< /pre>< p>通過上述代碼,我們可以往Oracle數據庫中插入一個BLOB類型的數據,其中將指定的本地文件xxx.jpg插入到img字段中. 與此類似,我們也可以通過jdbc讀取數據庫中的BLOB數據并保存到本地文件中. 如下是一個重頭戲:< pre>public static void readBlobData() throws Exception { Connection conn = DriverManager.getConnection(url, user,password); String sql = "select * from tablename where id= ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 1); ResultSet rs = pstmt.executeQuery(); if (rs.next()) { Blob blob = rs.getBlob("img"); InputStream in = blob.getBinaryStream(); File file = new File("yyy.jpg"); OutputStream out = new FileOutputStream(file); // 讀取數據 int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int length = -1; while ((length = in.read(buffer)) != -1) { out.write(buffer, 0, length); } // 關閉IO流 in.close(); out.close(); } rs.close(); pstmt.close(); conn.close(); }< /pre>< p>在上述代碼中,我們通過jdbc從數據庫中查詢到了一條記錄,并獲取了其中的BLOB對象blob,后面通過getBinaryStream()方法獲取流,通過write()方法將BLOB數據寫入到本地文件yyy.jpg中去。與插入操作相比,讀取操作的難點在于讀取時的緩存大小和循環讀取,這里我設置了一個1024 * 1的每次讀取緩存,確保了能在大部分情況下存儲二進制文件的正確讀取.< p>以上兩個操作比較簡單,但已經涵蓋了大部分場景,如果需要對BLOB數據進行更多的操作,可以上網查閱相關教程或手冊。. 總之,通過上述方法,我們可以以相對容易和優雅的方式,將二進制文件存儲到Oracle數據庫中,并隨時隨地進行讀取和使用.< /p>