登陆注册
7538600000025

第25章 Oracle的全文搜索(5)

rs=st.executeQuery("select*from myblob where id=1");

if(rs.next())

{

blob=rs.getBlob("fblob");

ImageIcon icon=new ImageIcon(blob.getBytes(1,(int)blob.length()));

JLabel l=new JLabel(icon);

JFrame jf=new JFrame("mywife");

jf.getContentPane().add(l);

jf.pack();

jf.setVisible(true);

}

}

catch(SQLException se)

{

se.printStackTrace();

}

finally

{

//——finally——start

if(rs!=null)

{

try

{

rs.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

//////////////////////////////if(st!=null)

{

try

{

st.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

/////////////////////////////

if(conn!=null)

{

try

{

conn.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

}

}

}

刚才的程序使用了Swing技术。下面再给出一个用JSP实现的例子。

案例名称:图片数据的读取和在网页上显示

程序名称:showimg.jsp

<%@ page contentType="text/html;charset=gbk"%>

<%@ page import="java.sql.*,java.io.*"%>

<%!

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

%>

<%

//安装驱动程序——

try

{

Class.forName("oracle.jdbc.driver.OracleDriver");

}

catch(ClassNotFoundException ce)

{

out.println(ce.getMessage());

}

//执行——

try

{

//获得Connection对象

String url="jdbc:oracle:thin:@ localhost:1521:yuanyuan";

conn=DriverManager.getConnection(url,"scott","tiger");

stmt=conn.createStatement();

rs=stmt.executeQuery("SELECT*FROM myblob where id=1");

if(rs.next())

{

…Blob blob=rs.getBlob("fblob");

byte[] buf=blob.getBytes(1,(int)blob.length());

response.setContentType("image/jpeg");

//图片的输出流

OutputStream wt=response.getOutputStream();

//将缓冲区的输入输出到页面

wt.write(buf);

//输入完毕,清除缓冲

wt.flush();

wt.close();

}

}

catch(SQLException e)

{

System.out.println(e.getMessage());

}

finally

{

if(rs!=null)

{

…try

{

rs.close();

}

catch(SQLException ee)

{

System.out.println(ee.getMessage());

}

}

if(stmt!=null)

{

…try

{

stmt.close();

}

catch(SQLException ee)

{

System.out.println(ee.getMessage());

}

}

if(conn!=null)

{

…try

{

conn.close();

}

catch(SQLException ee)

{

System.out.println(ee.getMessage());

}

}

}

%>

5.5.2BLOB的搜索

现在,为fblob列创建索引,语句如下:

create index idx myblob on myblob(fblob)indextype is ctxsys.context;

索引建立好之后,就可以执行全文搜索了。执行下面的语句,在fblob列中搜索“大禹”。

select id,fname from myblob where contains(fblob,"大禹")>0;

5.5.3BLOB搜索的应用

现在,有了前面学习的关于Oracle 二进制文档全文搜索的知识,可以做两个简单的应用。

下面这两个例子使用前面建立的myblob数据表,一个是桌面应用,一个是Web应用。使用的技术分别为:Oracle9i+Java Swing,Oracle9i+JSP2.4。

这两个应用允许用户输入关键词,然后单击“搜索”按钮,执行全文搜索,显示搜索结果。

案例名称:Oracle二进制文档全文搜索桌面应用

程序名称:BinSearcher.java

import java.util.*;

import java.io.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public classBinSearcher

{

//搜索关键词

static JTextField jtf=null;

//搜索按钮

static JButton jb=null;

//文本区域

static JTextArea jta;

private static void createAndShowGUI()

{

…JFrame.setDefaultLookAndFeelDecorated(true);

JFrame frame=new JFrame("Binary Searcher!yutianen@163.com");

frame.setDefaultCloseOperation(JFrame.EXIT ONCLOSE);

Container con=frame.getContentPane();

con.setLayout(newBorderLayout());

JPanel jpup=new JPanel();

jpup.setLayout(new GridLayout(1,2));

jtf=new JTextField(30);

jb=new JButton("搜索");

jb.addActionListener

newActionListener()

{

同类推荐
  • 中学生素质教育读本:教你学演讲

    中学生素质教育读本:教你学演讲

    演讲是一门综合艺术,它虽然不是播音,但要有播音那样的字正腔圆;它虽然不是说故事,但是要有说故事那样绘声绘色;它虽然不是朗诵,但要有朗诵那样的激情;它虽然不是戏曲,但要有戏曲那样般的冲突;它虽然不是主持,但要有主持那样的临场发挥。一位好的国家领导人拥有怎样的气魄,一位好的商人怎样找到自己的财富王国,一位年轻人怎样去实现自己的远大理想。演讲是一门艺术,一篇好的演讲将会使你受益终身,让我们一起来领略演讲的魅力吧!
  • 语文新课标必读-契诃夫短篇小说精选

    语文新课标必读-契诃夫短篇小说精选

    契诃夫全名是安东·巴甫洛维奇·契诃夫,他是19世纪末俄国伟大的批判现实主义作家,也是情趣隽永、文笔犀利的幽默讽刺大师,是短篇小说的巨匠,同样也是著名的剧作家。
  • 英雄人物故事

    英雄人物故事

    本书介绍了中外历史上许多英雄人物的成长经历、奋斗历程和奇闻轶事等,内容新奇有趣,语言通俗易懂,可帮助促进青少年的成长,激励其奋发向上,实现人生理想。
  • 抒情写作指导与好词好句好段(上)

    抒情写作指导与好词好句好段(上)

    作文是经过人的思想考虑,通过语言组织来表达一个主题意义的文体。写作文可以培养广大青少年思考问题的能力、组织能力、阅读与分析能力以及语言表达能力等,并且可以开阔思维,敞开思想,进行大胆地想象。
  • 韩愈传

    韩愈传

    本书为“唐宋八大家之首”韩愈的传记。韩愈作为中唐韩孟诗派的开拓者、古文运动的领袖、儒家思想承前启后的大儒,在中国文学史、思想史上拥有崇高的地位。李长之先生根据大量史料,重新梳理了韩愈的人生历程,深刻阐述了韩愈的哲学思想和文学思想的发展历程,为读者全景展现了一代思想家、文学家韩愈辉煌而又充满坎坷的一生。
热门推荐
  • 一切从被炸之后开始

    一切从被炸之后开始

    公元2345年,人类文明高速发展,那时人类发明了时光机器,人类可以自由的穿梭在时间中,但由于过度使用时光机,导致现实世界受到了极大的影响,于是,全世界开始禁止使用时光机,并用一些特殊的手段,解决那些由于时空穿梭所带来的问题。于是,一颗带有特殊芯片的炸弹,经过时空的穿梭落在了一个生活于1937年的一个少年的头上......
  • 我和你陆柒之婚恋

    我和你陆柒之婚恋

    从相知相爱相恋到结婚,还好自始至终都是你。“凌苡柒,你能不能别吓我,保护好你自己啊,别的不重要。”陆昱浩感觉自己心脏都要出问题了。“我没事啊。”凌苡柒心虚道。“你……唉算了。”开始到结尾我希望那个人永远是你
  • 域道门

    域道门

    刚大学毕业的肖帅,无意中被域道门选中成为了道者,却没想到第一次参与域道门的任务队友便全部死亡,只剩下他一人,他该何去何从?命中注定成道者,域道门中寻永恒。
  • 默默无雯

    默默无雯

    苏雯从未想过会遇见顾默,似乎是命中注定,每当她想要远离他时,顾默总会不经意间引起她的注意.他的一字一句都左右着苏雯的情绪.想逃,缺逃不掉
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 大学创业的那些年

    大学创业的那些年

    我只是一个充满想象力的少年,只是一个热爱小动物的少年,只是一个胆子大的少年,只是一个创业的少年。
  • 躺狗日记

    躺狗日记

    来自一个不会玩游戏又爱玩游戏的躺狗的自白
  • 峡谷数据控

    峡谷数据控

    游戏不止是操作和个人秀,还有分析和团队合作比赛不止是享受和梦想,还有严谨和计划赛场上的博弈不止是表面5V5的拼杀博弈,还有内在各种层面的分析如果一个选手不曾拥有顶尖的操作和手速,异于常人的特殊点只有理解、数据、分析以及数倍于他人的背后努力,一位理论知识远强于实际操作的前键盘侠能否以他的独特之处闯荡联盟
  • 谍战底牌

    谍战底牌

    黑暗势力围猎百年老店瑞升祥,背后到底隐藏着什么秘密?一个被迫加入军统的普通中国人,背负家仇国恨,毅然与侵略者斗智斗勇,演绎出一段步步惊心的故事......
  • 十年旅痕

    十年旅痕

    一个真正的旅行者应该是忘却一切目的而与大自然融和在一起的,他的肉体与灵魂都卸下了欲念的重荷,赤条条游向一片自由的天地,他的整个身心完全坠入了一种忘我的物我同一的境界中,被大自然那色彩迷离的网所俘获。正是这种行为,使人在旅行中超越了一般动物的特质,而升华出一个活脱脱的“人”!