/**
* 更新BLOB字段
*
* @param tableCode
* @param fieldCode
* @param fieldValue
* @param primaryKey
* @param primaryValue
* @return
* @throws DAOException
*/
public int updateBlob(String tableCode, String fieldCode,
byte[] fieldValue, String primaryKey, String primaryValue)
throws DAOException {
String sql = "UPDATE ##TABLECODE## SET ##FIELDCODE## =? WHERE ##PRIMARYKEY## = ##PRIMARYVALUE##";
sql = StringUtil.replaceAllString/*AllString*/(sql, "##TABLECODE##",
tableCode);
sql = StringUtil.replaceAllString/*AllString*/(sql, "##PRIMARYKEY##",
primaryKey);
sql = StringUtil.replaceAllString/*AllString*/(sql,
"##PRIMARYVALUE##", "'"+primaryValue+"'");
sql = StringUtil.replaceAllString/*AllString*/(sql, "##FIELDCODE##",
fieldCode);
SQLParameter param = new SQLParameter();
param.addBlobParam(fieldValue);
return getBaseDAO().executeUpdate(sql, param);
}
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "ymd", "1");
Statement statement = conn.createStatement();
StringBuffer sql = new StringBuffer("")
.append(" select a.psnname, ")
.append(" a.photo, ")
.append(" to_number(to_char(sysdate, 'YYYY')) - ")
.append(" to_number(substr(a.birthdate, 1, 4)) age, ")
.append(" b.docname ")
.append(" from bd_psnbasdoc a ")
.append(" left join bd_defdoc b on a.marital = b.pk_defdoc ")
.append(" where a.sex = '女' ")
.append(" and a.photo is not null ");
ResultSet resultSet = statement.executeQuery(sql.toString());
while(resultSet.next()){
Blob blob = resultSet.getBlob("photo");
String name = resultSet.getString("psnname");
String age = resultSet.getString("age");
String docname = resultSet.getString("docname") == null ? " " : resultSet.getString("docname");
InputStream inputStream = blob.getBinaryStream();
OutputStream outputStream = new FileOutputStream(new File("c:\\PIC\\"+name+"_"+age+"_"+docname+".jpg"));
byte[] buffer = new byte[1204];
int bytesum = 0;
int byteread = 0;
while ((byteread = inputStream.read(buffer)) != -1) {
bytesum += byteread;
outputStream.write(buffer, 0, byteread);
}
outputStream.flush();
outputStream.close();
inputStream.close();
}
statement.close();
conn.close();
}