最近老师要求做一个数据库备份的程序,然后给了一个sqlite-jdbc-3.7.2.jar包作为工具。
因为要求必须用Java实现,所以dump或者命令行之类的骚操作就不提了,这里也不谈怎么备份数据库的细节,实现方法有很多种,大家随意。
但是这个包似乎有一个Bug,就是当你使用ResultSet.getBlob()时它就会报错:
看一下源码,原来是这个方法没实现。
这就很头疼,因为Blob没法通过ResultSet来读取了,更别谈写入了。
所以我换了个方法,通过Statement来读取Blob数据,并用byte数组保存,用文件的输入输出流来实现读写操作。具体方法如下:
ResultSet rss = null;
try {
FileOutputStream fos = null;
File f = new File("blob.chm"); //把数据保存为chm文件
if(!f.exists()) {
f.createNewFile();
}
fos = new FileOutputStream(f);
byte[] buffer;
int len = 0;
for(int i = 0; i < number.