二进制数据不能使用文本编辑器查看内容,需要专门读取二进制数据的应用程序查看。例如读取图片文件时,读取图片的程序需要了解该文件的结构,并解释读取的数据,如果不了解该图片文件的结构,读取图片文件就会失败,也就无法把图片显示出来了。
在MySQL中,提供了LONGBLOB类型的字段用来存储二进制数据,可以存储4G以内的二进制数据。除此之外,还提供了BLOB、MediumBlob、TinyBlob字段来存储二进制数据,BLOB用于存储65K以内的二进制数据,MediumBlob用于存储16M以内的二进制数据,TinyBlob用来存储字节以内的二进制数据。
JDBC提供了Blob接口来封装对MySQL二进制字段类型的存取封装操作,Blob接口包含了getBinaryStream()方法,用于获取InputStream输入流。
课程案例shop数据库的user(用户表)的photo字段就是LONGBLOB字段,可以存储4G以内的图文文件。写入二进制数据时,需要通过I/O流的方式从图片文件中读取数据。
案例1:在user表中插入一条记录,user表的photo是LONGBLOB类型字段,该字段的值需要从图片文件读入。
在demo包下新建SqlDemoTest9类。代码如下:
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.InputStream;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.SQLException;
publicclassSqlDemoTest9{
//定义JDBC加载路径
staticStringjdbc=