CREATE SEQUENCE "ZW"."STUDENT_SEQ" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 81 CACHE 20 NOORDER NOCYCLE ;
public class InsertImage extends HttpServlet { //插入blob,先获取id (id自增有个触发器给删除了)
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// String fileName="D:\\My Documents\\My Pictures\\colorjb33.bmp";
int id=this.getId(); //同一个id
String name=req.getParameter("name");
String fileName=req.getParameter("fileName");
Blob b=null;
int i=0;
OracleConnection oc=new OracleConnection();
Connection conn=oc.getConnection();
try {
String sql="insert into student(id,name,image) values(?,?,empty_blob())";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1, id);
ps.setString(2, name);
i= ps.executeUpdate();
ps.close();
System.out.println("insert empty_blob");
String sl="select image from student where id=? for update";
PreparedStatement ps2=conn.prepareStatement(sl);
ps2.setInt(1, id);
ResultSet rs2=ps2.executeQuery();
byte[] buf=new byte[1024];
if(rs2.next()){
b=rs2.getBlob("image");
System.out.println(b);
BufferedOutputStream bos=new BufferedOutputStream(b.setBinaryStream(0));
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(fileName));
while(bis.read(buf)!=-1){
bos.write(buf);
}
bos.close();
bis.close();
}
rs2.close();
ps2.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("success.............");
}
private int getId(){
int id=0;
OracleConnection oc=new OracleConnection();
Connection conn=oc.getConnection();
String sql="select student_seq.nextval from dual";
try {
PreparedStatement ps=conn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
if(rs.next()){
id=rs.getInt(1);
}
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return id;
}
}