免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 881 | 回复: 0
打印 上一主题 下一主题

jsp 操作 oracle blob类型 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-01 23:51 |只看该作者 |倒序浏览
网上好多教程讲的都是不对的,发个例子!
这里用到了oracle的jdbc2驱动;
struts数据连接池,可自行修改成自己的连接方式。


String title   = "";
if(request.getParameter("title")!=null)   title=request.getParameter("title").trim();
String author  = "";
if(request.getParameter("author")!=null)  author=request.getParameter("author").trim();
String content = "";
if(request.getParameter("content")!=null) content=StringBean.strReplace(request.getParameter("content"),"'","").trim();
String tid="";
if(request.getParameter("tid")!=null)     tid=request.getParameter("tid").trim();
String flg="";
if(request.getParameter("flg")!=null)     flg=request.getParameter("flg").trim();
//保存添加
if(flg.equals("add")){

if (title.equals("") || content.equals("")) {
   session.putValue("successMessage","标题和内容不能为空!");
   response.sendRedirect("../main.jsp");
} else {
   String seq = "SEQ_T_NEWS_THREAD.nextval";
   String sql = "insert into t_news_thread(tid,title,author,class_id,content) values("+seq+",'"+title+"','"+author+"',0,EMPTY_BLOB())";
   try {
    //通过STRUTS获取数据源
    Connection conn = null;
    DataSource ds = (DataSource) application.getAttribute(Action.DATA_SOURCE_KEY);
    conn = ds.getConnection();
    conn.setAutoCommit(false);
    Statement stmt = conn.createStatement();
    stmt.executeUpdate(sql);
    sql = "select content from t_news_thread for update order by tid desc"; // 使用"FOR  UPDATE"得到表的写锁
    ResultSet rs = stmt.executeQuery(sql);
    if (rs.next()) {
     BLOB blob = ((OracleResultSet) rs).getBLOB("content"); // 得到BLOB对象
     OutputStream outout = blob.getBinaryOutputStream(); // 建立输出流
     InputStream in = new ByteArrayInputStream(content.getBytes()); //字符串转换为数据流
     int size = blob.getBufferSize();
     byte[] buffer = new byte[size]; // 建立缓冲区
     int len;
     while ((len = in.read(buffer)) != -1)
      outout.write(buffer, 0, len);
     in.close();
     outout.close();
    }
    conn.commit();
    stmt.close();
    conn.close();
    response.sendRedirect("news_list.jsp");
   } catch (Exception e) {
    e.printStackTrace();
    session.putValue("successMessage","对不起,系统超时,请重新操作!");
    response.sendRedirect("../main.jsp");
   }
  }
}
//保存修改
else if(flg.equals("mod")){

if (title.equals("") || content.equals("")) {
   session.putValue("successMessage","标题和内容不能为空!");
   response.sendRedirect("../main.jsp");
} else {
   String seq = "SEQ_T_NEWS_THREAD.nextval";
   String sql = "update t_news_thread set title='"+title+"',author='"+author+"',content=EMPTY_BLOB() where tid="+tid;
   try {
    //通过STRUTS获取数据源
    Connection conn = null;
    DataSource ds = (DataSource) application.getAttribute(Action.DATA_SOURCE_KEY);
    conn = ds.getConnection();
    conn.setAutoCommit(false);
    Statement stmt = conn.createStatement();
    stmt.executeUpdate(sql);
    sql = "select content from t_news_thread where tid='"+tid+"' for update"; // 使用"FOR  UPDATE"得到表的写锁
    ResultSet rs = stmt.executeQuery(sql);
    if (rs.next()) {
     BLOB blob = ((OracleResultSet) rs).getBLOB("content"); // 得到BLOB对象
     OutputStream outout = blob.getBinaryOutputStream(); // 建立输出流
     InputStream in = new ByteArrayInputStream(content.getBytes()); //字符串转换为数据流
     int size = blob.getBufferSize();
     byte[] buffer = new byte[size]; // 建立缓冲区
     int len;
     while ((len = in.read(buffer)) != -1)
      outout.write(buffer, 0, len);
     in.close();
     outout.close();
    }
    conn.commit();
    stmt.close();
    conn.close();
   
    response.sendRedirect("news_list.jsp");
   } catch (Exception e) {
    e.printStackTrace();
    session.putValue("successMessage","对不起,系统超时,请重新操作!");
    response.sendRedirect("../main.jsp");
   }
  }
}
//删除
else if(flg.equals("del")){
try{
  //通过STRUTS获取数据源
  Connection conn = null;
  DataSource ds = (DataSource) application.getAttribute(Action.DATA_SOURCE_KEY);
  conn = ds.getConnection();
  Statement stmt = conn.createStatement();
  stmt.executeUpdate("delete from t_news_thread where tid="+tid);
  conn.commit();
  stmt.close();
  conn.close();
  response.sendRedirect("news_list.jsp");
} catch (Exception e) {
  e.printStackTrace();
  session.putValue("successMessage","对不起,系统超时,请重新操作!");
  response.sendRedirect("../main.jsp");
}
}
%>


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8718/showart_94087.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP