用struts 2写了个从oracle 查询照片的web 程序,照片是以二进制BLOB的形式存入数据库的。
页面暂时还很简单,只有一个文本输入框来输入需要查询的人的姓名,和一个搜索button。
在JDBCHelper.java中,有方法
public static List queryBySql(final Class clazz, final int paramLength,
final String conditionSql, final Object[] values){
//中间的内容太长就不贴出来了,问题就在这下面了
while (rs.next()) {
for (int i = 0; i < columnLength; i++) {
columnValues[i] = rs.getString(i + 1);
}
Constructor constructor = BeanUtils.getConstructor(clazz,paramLength);
Object temp = constructor.newInstance(columnValues);
list.add(temp);
return list;
}
此方法用来从数据库查询数据,返回一个List,但是只能是String类型。可是照片是BLOB形式存储在数据库中,于是我自己写了个方法,如下:
public static List queryBLOBBySql(final Class clazz, final int paramLength,
final String conditionSql, final Object[] values) {
//中间依然省略
while (rs.next()) {
for (int i = 0; i < columnLength; i++) {
columnValues[i] = rs.getBlob(i + 1); //这里从getString改成了getBlob
}
Constructor constructor = BeanUtils.getConstructor(clazz,paramLength);
Object temp = constructor.newInstance(columnValues);
list.add(temp);
return list;
}
具体就是:
columnValues[i] = rs.getBlob(i + 1); //这里从getString改成了getBlob
但是rs里面没有getBlob()这个方法,我就直接在JDBCHelper.java这个类里面写了这个方法,如下:
public static BLOB getBlob() {
return blob;
}
本来是抱着试一试的态度,但意外的发现这样居然行得通,基础知识比较薄弱,也不知道为什么,既然行得通,那就用吧。
于是,图片的BLOB数据就被我成功的读出来了。
好吧,就这样,第一篇BLOG,现在还是菜鸟,我希望这个BLOG能见证我的成长,加油~~~~