Java面試題JDBC能否處理Blob和Clob

引導語:JDBC是一種用於執行SQL語句的Java API,可以爲多種關係數據庫提供統一訪問。以下是本站小編分享給大家的`Java面試題JDBC能否處理Blob和Clob,歡迎閱讀學習!

Java面試題JDBC能否處理Blob和Clob

 JDBC能否處理Blob和Clob?

答: Blob是指二進制大對象(Binary Large Object),而Clob是指大字符對象(Character Large Objec),因此其中Blob是爲存儲大的二進制數據而設計的,而Clob是爲存儲大的文本數據而設計的。JDBC的PreparedStatement和ResultSet都提供了相應的方法來支持Blob和Clob操作。下面的代碼展示瞭如何使用JDBC操作LOB:

下面以MySQL數據庫爲例,創建一個張有三個字段的用戶表,包括編號(id)、姓名(name)和照片(photo),建表語句如下:

123456create table tb_user(id int primary key auto_increment,name varchar(20) unique not null,photo longblob);

下面的Java代碼向數據庫中插入一條記錄:

1234567891011121314151617181920212223242526272829303132333435363738394041import InputStream;import ception;import tStream;import ection;import erManager;import aredStatement;import xception;class JdbcLobTest {public static void main(String[] args) {Connection con = null;try {// 1. 加載驅動(Java6以上版本可以省略)ame("er");// 2. 建立連接con = onnection("jdbc:mysql://localhost:3306/test", "root", "123456");// 3. 創建語句對象PreparedStatement ps = areStatement("insert into tb_user values (default, ?, ?)");tring(1, "駱昊"); // 將SQL語句中第一個佔位符換成字符串try (InputStream in = new FileInputStream("test.jpg")) { // Java 7的TWRinaryStream(2, in); // 將SQL語句中第二個佔位符換成二進制流// 4. 發出SQL語句獲得受影響行數tln(uteUpdate() == 1 ? "插入成功" : "插入失敗");} catch(IOException e) {tln("讀取照片失敗!");}} catch (ClassNotFoundException | SQLException e) { // Java 7的多異常捕獲tStackTrace();} finally { // 釋放外部資源的代碼都應當放在finally中保證其能夠得到執行try {if(con != null && !osed()) {e(); // 5. 釋放數據庫連接 con = null; // 指示垃圾回收器可以回收該對象}} catch (SQLException e) {tStackTrace();}}}}