MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

     有张表,有两个字段: id,patentid,他们分别记录了这条记录的id,以及父id号,
     如何根据最顶层的id找到所有的id,包括子id,孙子id,以及重孙id.

--用递归查询
SELECT ID, PARENTID FROM tablename 
Start 
With ID = 'xxx' 
Connect 
By Prior ID = ParentId

 以下转自http://blog.csdn.net/apicescn/archive/2007/02/16/1510922.aspx

  connect by 是结构化查询中用到的,其基本语法是:
select ... from tablename start by cond1
connect by cond2
where cond3;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
id,parentid
那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
用上述语法的查询可以取得这棵树的所有记录。
其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
COND2
是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。
COND3
是过滤条件,用于对返回的所有记录进行过滤。

PRIORSTART WITH关键字是可选项
PRIORY
运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR
运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是
自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。START WITH 子句为
可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询
条件的行作为根节点。
完整的例子如SELECT PID,ID,NAME FROM T_WF_ENG_WFKIND START WITH PID =0 CONNECT BY PRIOR ID = PID

以上主要是针对上层对下层的顺向递归查询而使用start with ... connect by prior ...这种方式,但有时在需求需要的时候,可能会需要由下层向上层的逆向递归查询,此是语句就有所变化:例如要实现 select * from table where id in ('0','01','0101','0203','0304') ;现在想把0304的上一级03给递归出来,0203的上一级02给递归出来,而01现在已经是存在的,最高层为0.而这张table不仅仅这些数据,但我现在只需要('0','01','0101','0203','0304','02','03')这些数据,此时语句可以这样写SELECT PID,ID,NAME FROM V_WF_WFKIND_TREE WHERE ID IN (SELECT DISTINCT(ID) ID FROM V_WF_WFKIND_TREE CONNECT BY PRIOR PID = ID START WITH ID IN ('0','01','0101','0203','0304') );

其中START WITH ID IN里面的值也可以替换SELECT 子查询语句.

http://topic.csdn.net/t/20050319/17/3864428.html
     http://blog.csdn.net/Bogues/archive/2005/10/28/518590.aspx

posted @ 2007-04-28 19:46 leekiang 阅读(1631) | 评论 (0)编辑 收藏

select  to_date( ' 2007/02/26 ' ' yyyy/mm/dd ' +  rownum  -   1   from  user_objects  where  rownum  <=   (to_date( ' 2007/03/01' ' yyyy/mm/dd ' ) - to_date( ' 2007/02/26 ' ' yyyy/mm/dd ' + 1 );
2007/2/26
2007/2/27
2007/2/28
2007/3/1
注:能查询到的最大天数受user_objects个数的制约。
see

posted @ 2007-04-27 05:00 leekiang 阅读(638) | 评论 (0)编辑 收藏

FldXXXX类,是操作字段的类,一般有下面四个方法

Init()     初始化工作

initValue() 初始化值时的工作。

validate() 数据校验,一般在光标离开此字段的输入框时校验。

action()   当validate执行完时,执行的动作

posted @ 2007-04-27 00:44 leekiang 阅读(298) | 评论 (0)编辑 收藏

问题:当用户在MAXIMO6中增加自己开发的程序后,在系统的帮助系统中会自动增加帮助文件目录,但点击后会提示:404错误。

解决办法:增加针对该程序的帮助文件。

解决步骤:

1、新增目录。在\Maximo\applications\maximohelp\helpweb\maximohelp\zh\mergedProjects 目录下建立应用程序对应的目录。

2、目录建立完后,需要在Maximo\applications\maximohelp\helpweb\maximohelp\WEB-INF\classes\psdi\servlet\applist.txt 文件中把目录名也增加进去。否则前台还会显示:404错误,原因是MAXIMO帮助文件使用了过滤器。

3、再重新打包帮助文件。
from here

posted @ 2007-04-26 23:16 leekiang 阅读(334) | 评论 (0)编辑 收藏

具體修改方法步驟如下:
1, 修改Maximo本機系統安裝路徑c:\maximo\actfiles\activeportal\WEB-INF\classes\propfiles\
2, 在該機器上打開dos命令,執行:cd C:\bea\jdk131_06\bin
3, 執行命令(以下內容為一條完整命令,Native2ascii與後面兩段之間間隔是“空格”而非“回車”):Native2ascii c:\maximo\actfiles\activeportal\WEB-INF\classes\propfiles\folders.txt c:\maximo\actfiles\activeportal\WEB-INF\classes\propfiles\folders.properties
4, Rebuild the acweb.ear, and restart the application server
 

(以上方法只適用於中文版本的Maximo 5.2以上,英文版本不需要,只需要直接修改properties文件即可)

from here

posted @ 2007-04-26 23:12 leekiang 阅读(311) | 评论 (0)编辑 收藏

 URL url = this.getClass().getResource("/javax/servlet/http/HttpSessionBindingListener.class");
 System.out.println(url);
控制台输出:
jar:file:/D:/bea/weblogic81/server/lib/weblogic.jar!/javax/servlet/http/HttpSessionBindingListener.class

http://schnell18.javaeye.com/blog/39214

posted @ 2007-04-26 16:06 leekiang 阅读(1407) | 评论 (0)编辑 收藏

ClassNotFoundException发生在装入阶段。
当应用程序试图通过类的字符串名称,使用常规的三种方法装入类,但却找不到指定名称的类定义时就抛出该异常。

NoClassDefFoundError: 当目前执行的类已经编译,但是找不到它的定义时

也就是说你如果编译了一个类B,在类A中调用,编译完成以后,你又删除掉B,运行A的时候那么就会出现这个错误

加载时从外存储器找不到需要的class就出现ClassNotFoundException
连接时从内存找不到需要的class就出现NoClassDefFoundError

大概这样的吧,JDK API里面的解释
1.NoClassDefFoundError
当 Java 虚拟机或 ClassLoader 实例试图在类的定义中加载(作为通常方法调用的一部分或者作为使用 new 表达式创建的新实例的一部分),但无法找到该类的定义时,抛出此异常。
当前执行的类被编译时,所搜索的类定义存在,但无法再找到该定义。

2.ClassNotFoundException
当应用程序试图使用以下方法通过字符串名加载类时,抛出该异常:
* Class 类中的 forName 方法。
* ClassLoader 类中的 findSystemClass 方法。
* ClassLoader 类中的 loadClass 方法。
但是没有找到具有指定名称的类的定义。从 1.4 版本开始,此异常已经更新,以符合通用的异常链机制。在构造时提供并通过 getException() 方法访问的“加载类时引发的可选异常”,现在被称为原因,它可以通过 Throwable.getCause() 方法以及与上面提到的“遗留方法”来访问。

http://www.javaeye.com/topic/21141?page=1

posted @ 2007-04-26 15:55 leekiang 阅读(6224) | 评论 (4)编辑 收藏

webloigc的控制台出现:java.net.SocketException:Connection reset by peer.
别人的理解:当Servlet(jsp)完成业务逻辑的处理后,向响应页面输出结果时,前端客户切换到了另外一个页面,所以就会出现sockets write error。
一般是有些客户端已关闭,一些线程因为延迟等原因觉察不到此连接已结束,继续等到到出错或是 客户端那里不停刷或一个访问/刷新没完成前再刷,要让这个无用的线程死掉和和这个错误如果不影响应用运行的话大可不必理会。有一种抛出这个异常的情况是:浏览器请求了一个服务器端资源,在响应回来之前转而请求其他的资源。这个时候最初的浏览器跟服务器的连接中断,服务器的peer程序就会reset那个connection

posted @ 2007-04-23 11:17 leekiang 阅读(843) | 评论 (0)编辑 收藏

   银星围棋5的目录下有一个GTool2.exe,利用它可以让两个不同的具有人机对弈功能的围棋软件互相对弈,感觉类似于左右手互搏。:)
   步骤简单介绍如下:
   1)分别启动两个具有围棋对弈功能的软件,例如MuiltiGo4(这里我采用Gnugo3.7.10做围棋引擎)和银星围棋5,让其中一方的电脑执黑,另外一方的电脑执白,分别开始一个新棋局。这时执黑方的棋盘中会有一个黑子,执白方为空棋盘。这里要注意的是两个软件都要缩小到约占屏幕一半,一个放屏幕左边,一个放屏幕右边。
    2)启动GTool2.exe,出现一个工具条,如下图所示。点击鼠标左键把工具条上带有十字标记的黑子拖放到执黑现行的那个软件的棋盘上,松手;同样把带有十字标记的白子拖放到执白的软件的棋盘上。这时注意到这两个软件的棋盘均被正确识别。


    3)把工具条上第三个图形为用手指执子的标志拖放到执黑那个软件的棋盘的先走的黑子上,这时这两个软件就自动开始对弈了。
     
    上面的方法我是从这里找到。感觉美中不足的是对弈时这两个软件都必须在屏幕上,这样的话当它们对弈时我就不能用电脑干别的事情了。
     gnugo3.7.10和银星围棋5的第一局,银星大赢23.5目。

posted @ 2007-04-14 22:53 leekiang 阅读(2549) | 评论 (1)编辑 收藏

posted @ 2007-04-10 19:59 leekiang 阅读(454) | 评论 (0)编辑 收藏

仅列出标题
共54页: First 上一页 46 47 48 49 50 51 52 53 54 下一页