博客首页 | 关于ALONELY | 友情链接     


Search: 
 ALONELY最新文章列表

 Oracle存储过程之处理ID串

2008-8-28

不知道大家有没有过这样的查找需求:
比如A表中有个字段是Varchar2类型的,存储的数据如下:
121,421,632,89,8 ……
这个字段中的数据全是与B表中的ID相关联的,并且是以逗号分开的(这个很常见吧!~)。

现在要求在sql语句中将有关联的项查找出来,该怎么做呢?
当然这是在Oracle的sql语句中,肯定不能使用Java的spilt来分割了,所以只能用Oracle的方法,那就是存储过程。我这里给大家介绍的只是一个最基本的Oracle存储过程,就算是抛砖引玉吧!

以下是Oracle存储过程之简单函数调用代码:
create or replace function treeid(id varchar2 --A表中的ID串
                                       ) RETURN number AS
  v_num    number := 0;
  v_id varchar2(200) := id;
  v_sql    varchar2(500);
  v_num_c  varchar(10) := '0';
  TYPE cur IS REF CURSOR; --cru是指针类型
  v_cur cur;
BEGIN
  begin --这里用异常捕捉是否参数为空
    v_sql := 'select count(t.id) from B表 t where t.id in (' || v_id || ' )';
    OPEN v_cur FOR v_sql;
    loop
      fetch v_cur
        into v_num_c;
      exit when v_cur%notfound;
    end loop;
    close v_cur;
  exception
    WHEN others THEN
      v_num_c := '0';
  end;
  v_num := to_number(v_num_c);
  RETURN v_num;
END treeid;
Ok,这样就完成了,如果没有找到或者参数为空,则返回0,否则肯定返回结果大于0。
调用的时候这样判断一下就行了:
sql = "treeid(A表中的字段) > 0"
我这里的sql语句前后都省略了,大家应该能看明白吧,如果有不明白的地方可以在文章下面留言,我会尽我所能为大家解答的。

No Comments
21 views
Tags:  oracle, 存储过程
Posted in Oracle与Mysql

 Oracle中时间类型的转换与运算

2008-8-27

想必做过项目的程序员都应该知道在表与表关联的Sql语句中,通过Oracle自带的函数与自定义的方法做一些简单的运算是很常见的。今天我给大家介绍的是在Oracle的sql语句中,完成时间类型与字符串类型之间的转换与简单的运算。

首先,大家应该知道在oracle中将时间类型转换成字符串类型的函数是:to_char(Sysdate, 'yyyy-mm-dd')
反之,将字符串类型转换成时间类型的函数是:to_date('2008-08-27', 'yyyy-mm-dd')

至于简单的运行,例如本身就是日期类型的:
日期减一天:select to_char(Sysdate - 1, 'yyyy-mm-dd') from dual
减去一个月:select add_months(sysdate,-1) from dual
减去一年:select add_months(sysdate,-12) from dual

如果本身是字符串类型的:
日期减一天:select to_char(to_date('2008-08-27', 'yyyy-mm-dd') - 1, 'yyyy-mm-dd') from dual
Ok,以下的仿照这个就行了。
其实Oracle的函数还有很多,我以后会为大家继续介绍的。

No Comments
16 views
Tags:  oracle, 时间, 类型, 转换, 运算
Posted in Oracle与Mysql

 Java中的Abstract Factory(抽象工厂)模式

2008-8-24

有时候,我们希望在为客户代码提供实例化类的同时能够控制应该对哪个类进行实例化。在这些情况下,我们可以应用Factory Method模式,并提供一个方法来利用某种外部因素确定应该实例化哪个类。有时候,这些用于控制对哪个类进行实例化的外部因素往往涉及多个类,其本身就是一个研究主题。

Abstract Factory(抽象工厂)模式的意图在于创建一系列相互关联或相互依赖的对象。

从广义上说,包通常是类的系列,而抽象工厂可以创建对象的系列。Abstract Factory模式可以为客户创建相互关联或相互依赖的对象系列的部分对象。与Factory Method模式一样,Abstract Factory模式使得客户无需知道实例化哪个类。借助于Abstract Factory模式,可以为客户提供工厂类,每个工厂类都可用于创建一系列与某一公共主题相关的对象。

下面我结合一个简单的例子来为大家演示Abstract Factory(抽象工厂)模式:

阅读全文

No Comments
36 views
Tags:  java, 抽象, 工厂, 模式
Posted in 设计模式

 jxl.read.biff.BiffException: Unable to recognize OLE stream 解决

2008-8-22

今天我用 Java 程序将 Excel 表格导入数据库的时候,给我报了一个  Excel 不是 jxl 认定的标准 OLE file 异常,详见:jxl.read.biff.BiffException: Unable to recognize OLE stream。但是当我打开文件的时候,发现我的 Excel 文件正常打开,并且显示也没有任何问题。

发现了异常,我的解决思路如下:
首先,我怀疑是我的代码写错了,我开始用 deBug 调试,可是每当程序走到:
wb = Workbook.getWorkbook( new File( filePathName ) , set ) ;
这里的时候,立刻跑到 Catch 中了,后台报出了 BiffException 异常。并且这步以上的代码我敢确定都没有问题,这说明不是代码的错误。

然后,我开始怀疑是我的 jxl.jar 包坏掉了,但是从我同事那 copy 了一个 jxl.jar 包还是没解决。

最后,我把那个 Excel 文件删除了,自己重新建立了一个 Excel 文件,并且把数据手动的填了进去(这可费了我好多的时间)。哈哈,问题解决了,没有任何异常。

这是什么原因呢?
我开始去网上搜索资料,结果网上的大概说法是:
因为我的 Excel 文件是从网页中下载下来的,所以是网页文件。虽然看起来跟 Excel 的标准文件没什么两样,但是它却不是2进制的 Excel 文件。

哎!~不说什么了,只能说明 jxl 的容错性太差了。下面帮助大家总结一下,如果大家在发现 BiffException 异常时候,麻烦您手动建一个 Excel 文件试一下,看看是不是这个问题。如果大家有什么好办法的话,请您在文章下面告诉我,我将不胜感激。

No Comments
64 views
Tags:  java, excel, 问题
Posted in 解析插件

 将查询出的每条记录均封装成HashMap

2008-8-20

今天续昨天的《将查询出的每条记录均封装成JavaBean对象函数》一文后,在给大家发一个底层(dao层)的核心代码。其作用是把传过来的 sql 语句里的每个字段均封装在 HashMap 中,然后在把每条 HashMap 封装成 List 的形式传回去。

调用格式如下:
String sql = "select id, name from 表名 ;
List ls = DBUtil.queryListMap( sql ) ;
获取 List 中的数据如下:
字符串:((HashMap)ls.get(i)).get("name").toString()
整型:Integer.parseInt(((HashMap)ls.get(i)).get("id").toString())

Ok,下面我把核心代码贴出来:

阅读全文

No Comments
81 views
Tags:  查询, 记录, 封装, hashmap
Posted in JSP2.0专栏

 将查询出的每条记录均封装成JavaBean对象函数

2008-8-19

今天我给出的代码是在项目中用的比较频繁的公共类函数代码,也可以说它是底层(dao层)的核心代码之一,其主要的作用就是把 sql 语句和你要封装的 Javabean 传过去,然后判断函数返回的 List 值,如果不为空,则封装成功,否则表示 sql 语句没有查询到值,当然也就封装不到值了。
但是这里有一点是需要注意的:sql 语句中不能用全部查询的(*),必须把每个字段均写在 sql 语句的 select 中,并且顺序不能乱。

至于 Javabean 我这里简单的提一下,其实也没什么东西,里面就是 set 与 get 方法罢了,如果封装成功了,以后用 get 就可以取出值了。

下面我给出调用函数的代码并加以说明:
String sql = "select id name age from 表名 ; //这里必须把每个字段都列出来,并且和你要封装的顺序一致。
List list = queryListObject(sql, "com.3y11.JavaBean名") ;  //这里的第二个参数是:包名的全路径加上你要封装的 JavaBean 类名。

Ok,下面是核心的 Java 函数代码:

阅读全文

No Comments
105 views
Tags:  查询, 封装, javabean, 对象, 函数
Posted in JSP2.0专栏

 在Struts架构中用Excel表格导出List数据

2008-8-18

今天我在Struts架构中做了一个用Excel表格导出查询结果(List数据)的小例子,现在准备跟大家分享一下。
程序的流程是这样的:
首先,在前台页面中把查询结果用表格的形式显示出来(当然这些数据是在后台传过来的List中遍历出来的)。
然后,单击“导出Excel文件”按钮,把前台显示的数据就存入Excel文件中了。
最后,用户可以根据自己的需要保存或者是查看这个Excel文件。

大家都应该清楚,如果要想用Java操作Excel文件,必须得有jxl.jar这个包,如果大家没有的话,可以在文章下面把您的邮箱留下,我给您发一个过去。
Ok,下面请大家看具体的代码吧:
首先,给出前台的jsp页面代码,其中的那个list就是用于前台遍历的list,把它用session的形式传到后台就行了。

阅读全文

No Comments
101 views
Tags:  struts, 架构, excel, list
Posted in Struts专栏

 Java中的Visitor(访问者)模式

2008-8-16

如何扩展一个现有的类层次结构来实现新的需求呢?一般的做法是添加新的方法以满足新需求。但是,有时候新需求可能与现有对象模型根本就不兼容。另外,有可能你无权看到已有代码。在这些情况下,无法修改类层次结构内的代码,我们要想实现对类层次结构行为的扩展,那几乎是不可能的。但是,如果开发人员能在设计类层次结构的过程中应用Visitor(访问者)模式,这将大大地方便其他开发人员在以后的软件开发过程中扩展该类层次结构的行为。

像Interpreter(解释器)模式一样,Visitor(访问者)模式通常位于Composite(组合)模式之上。如果前面两个模式大家不是很熟悉的话,请先把前面两个模式熟悉一下,然后在看具体的代码。

Visitor(访问者)模式的意图在于让代码用户能够在不修改现有类层次结构的前提下,定义该类层次结构的操作。

下面请看我给出的具体例子:

阅读全文

No Comments
83 views
Tags:  java, 模式
Posted in 设计模式
 
当前页1/24 首页 | 上页 | 下页 | 尾页 | 转到第
订阅到您的阅读器 feedsky
抓虾
pageflakes
狗狗
google reader
bloglines
my yahoo
鲜果
更多订阅方式:
AddThis Feed Button
加入我的网络收藏夹:
AddThis Social Bookmark Button

Categories

  设计模式
  J2EE其它架构
  JSP2.0专栏
  绝对8卦
  EJB与Jboss
  Struts专栏
  Oracle与Mysql
  Spring专栏
  Hibernate专栏
  JSON与EXT2.0
  Server
  J2SE专栏
  Linux与Unix
  JavaScript与Ajax
  ASP专栏
  解析插件

Recent Comments

  zhucb on Struts+Spring+hibernate实现动态二级联动菜单
  Alonely on Struts+Spring+hibernate实现动态二级联动菜单
  zhucb on Struts+Spring+hibernate实现动态二级联动菜单
  Alonely on 讲解JSP安全性及config对象的应用
  xiaoyi on 讲解JSP安全性及config对象的应用
  Alonely on 分析J2EE中MVC架构的发展历程

Most Viewed

  ASP生成Rss Feed刷新 问题解决 - 6348 views
  no jacob in java.library.path 问题解决 - 2235 views
  Struts+Spring+hibernate实现动态二级联动菜单 - 1814 views
  讲解Spring封装Hibernte回调 - 1652 views
  ASP结合Ajax检测用户名是否存在 - 1594 views
  ASP的预处理语句 - 1459 views
  JAVA中的标签使用 - 1155 views
  ASP解析JSON例子 - 1143 views
  JavaScript与Ajax写的自动选择最快的镜像服务器 - 1140 views
  Java面向对象编程的三大特点 - 1123 views

Advertiser Links

L屋韩版服饰淘宝旗舰店

Archives

  August 2008
  July 2008
  June 2008
  May 2008
  April 2008
  March 2008
  February 2008
  January 2008

Links

  
  我的淘宝小店
  L屋服装商城
  诡计的不老歌
  博士常用网站
  YOYO'S BLOG

Alimama AdSense

博客首页  |   加入收藏   |   设为首页  |   联系方式  |   给我留言 
    alonely   版权所有 2008 www.3y11.com All Rights Reserved