在使用数据库的时候大多数情况下数值型、字符型和日期类型的变量存储就已经满足了我们很多的需求。但是在某些时候,我们还需要一种类型来存储数据,那就是二进制的数据了。如果需要存储文件,图片或者视频之类的只能使用二进制的数据来存储的东西时,我们就需要知道怎么样来操作数据库中的二进制数据了。
在很多各种数据库中的二进制处理方式不同,数据类型也就不一样,微软的sqlserver中二进制数据类型可以使用IMAGE类型,IMAGE类型可以存放最大 2G的二进制数据,应该可以满足绝大多数的需求了。在mysql数据库中二进制数据使用blob对象,对于存储空间的大小可以选择4种类型的blob对象。在Oracle数据库中RowId对象可以存储10个字节的二进制数据,Blob对象可以存储最大4G的数据,这些就足够了。
那么怎么样使用JDBC在数据库中存储二进制数据呢?答案就是使用流来处理。在JDBC中,使用输入流来读取一个数据,然后将流中的数据存储为一个byte[] 类型的字节数组,也就是存储为一个二进制的对象。当然如果使用PrepareStatement接口,那就很方便了,可以使用预编译的设置参数方式直接将输入流设置为存储参数,方法是setBinaryStream
(int parameterIndex, InputStream x, int length)
。这样就可以将二进制的数据存储到数据库中了。
读取数据库中的二进制数据很简单,就是使用ResultSet结果集中的getBinaryStream()方法就可以从数据库中读取出二进制的数据了。
对于JDBC还有一中存储二进制数据的方法,Blob对象提供可以操作二进制数据的接口,用来对二进制数据操作是很方便的。