Java面试题JDBC能否处理Blob和Clob

来源:文书网 1.22W

引导语: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();}}}}

热门标签