Java面試題JDBC能否處理Blob和Clob
引導語:JDBC是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問。以下是本站小編分享給大家的`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),建表語句如下:
123456 | create table tb_user ( id int primary key auto_increment, name varchar( 20 ) unique not null , photo longblob ); |
下面的Java程式碼向資料庫中插入一條記錄:
1234567891011121314151617181920212223242526272829303132333435363738394041 | import 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的TWR
inaryStream( 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();
}
}
} } |