`
kang
  • 浏览: 474486 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

NBS编码小结2

    博客分类:
  • NBS
阅读更多

 

SQL 语句错误:

Caused by: java.sql.SQLException: インデックス 1 は範囲外です Query: get *** Parameters: [3CDBE6BF-4426-424C-BD95-086300B82F8D, supplier_ yyy ]

错误描述:索引 1 超出范围了。

原因: 查询 方法用 了,使用了 executeQueryListSql (这个只能接收一个参数的)

正确做法是使用 executeQueryList (这个方法可以接收 N 个参数)。

->DAO这一层,提供了很多方法供外界使用,外界只要选择合适的方法进行调用就可以了。(20090512追加)

 

 

一个模块共用一个 ActionForm

比如 ** 情報登録入力 - ** 情報登録確認 - ** 情報登録完了

3 action (对应 3 个页面)就共用一个 form

-》虽说是3个页面,但页面内容几乎完全一致(都是×××情报),所以可以共用一个ActionForm。(20090512追加)

 

 

异常处理:

Dao BL 中,不进行异常的处理,在 Listern 中使用 try-catch ,将捕获到的异常转变成 IM 中的 Applkication 异常,再往外抛,由 Action 进行处理(配置了异常处理)。

-》在下层,不进行异常处理,只进行捕获和抛出(下层更专注于自己的本职工作:比如和数据库打交道、业务逻辑的设计等等);将异常的具体处理交给上层去做,统一管理。(20090512追加)

 

 

Commit 相关:

Commit 代码时,添加上说明文字(说明本次改动修改了什么地方)。

-》这样便于代码review,代码的可读性得到了增强。(20090512追加)

 

建议:经常性小规模地 check in ,一次就修改一个 bug 比较好。

-》前者可能是为了尽量实时保持代码的可编译性;后者是为了更有针对性。(20090512追加)

 

Commit 时,添加上 refs #XXX XXX bug 票号),这样,在 track 中,就可以通过链接直接看到代码改动部分。

-》此次是使用track进行项目管理的。(20090512追加)

 

 

SQL 查询语句中, In 子句中不能有数组,需要动态创建 SQL 语句 ,示例如下:

SQL 文件( getUserCdById .sql )中是开头部分:

SELECT

DISTINCT USER_CD  

FROM AAA

WHERE AAA . id IN 
 

再动态创建 in 后面的部分:

   public  List< BBB > getUserCdById(String[] arrayIds) throws  DataConnectException, DataPropertyException,DataAccessException {

        StringBuilder sql = new StringBuilder( this .getSql( " getUserCdById " ));

        boolean firstOne = true ;

        for (String id : arrayIds) {

            if (firstOne) {

                sql.append( " (" );

                firstOne = false ;

            } else {

                sql.append( "," );

            }

            sql.append( "'" + id + "'" );

        }

        sql.append( ")" );

        // ユーザー CDよって、 ×× 者を取得

        return this .executeQueryListSql(sql.toString());

    } 

 

 

现象: batch 运行调试过程中,遇到过上面的问题。

[WARN] c.c.s.w.WebAppFilterChain - java.lang.IllegalStateException: Connection UserConnection[ManagedConnectionImpl[jdbc/sqlserver2005.24]] was not closed. Connections must have a close() in a finally block.

java.lang.IllegalStateException: Connection UserConnection[ManagedConnectionImpl[jdbc/sqlserver2005.24]] was not closed. Connections must have a close() in a finally block.

            at com.caucho.jca.UserTransactionImpl.abortTransaction(UserTransactionImpl.java:532)

            at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:208)

            at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)

            at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)

            at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)

            at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)

            at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)

            at java.lang.Thread.run(Thread.java:595)  

-》问题描述:

  1. Connection UserConnection[ManagedConnectionImpl[jdbc/sqlserver2005.24]] was not closed. Connections must have a close() in a finally block.

finally 块中,必须将连接资源全部关闭掉。(20090512追加)

 

原因分析: 前面 所有的其他事务处理,都 是放在 event 进行

现在 想使 用的是 Batch,没有通 event,所以需要程序员自己 connection 行管理。

 

解决方案:

import  jp.co.intra_mart.framework.base.data.DataAccessController;

import jp.co.intra_mart.framework.base.data.DataManager;

 

try {

DataAccessController controller = DataManager.getDataManager ().getDataAccessController();

。。。。。。

}

finally {

            try {

                // コレクションをクローズする

                controller.release();

            } catch (RuntimeException e) {

                LOG .warn( "runtime exception" , e);

            } catch (DataConnectException e) {

                LOG .warn( "data connect exception" , e);

            }

        } 

 

分析:最后关闭资源(包括数据库连接)。

-》这边,使用的还是intra-mart框架中的一些东东(比如DataAccessController类)。(20090512追加)

 

分享到:
评论

相关推荐

    nbs.zip_A2LB_CAD怎样加如NBS_NBS_account4kc_cad文字

    针对这样的需求,"nbs.zip_A2LB_CAD怎样加如NBS_NBS_account4kc_cad文字" 提供了一个解决方案,即通过加载名为"NBS"的插件来快速对CAD图纸中的单行文字数字进行相加操作。这个插件显著提升了CAD用户的效率,减少了...

    CAD 数字求和程序 NBS

    NBS浩辰CAD是一款国产的CAD软件,旨在为用户提供高效、精确的设计工具,其功能强大且易于操作,尤其在求和功能上表现突出。 在工程设计中,尤其是在建筑工程或制造业,设计师经常需要处理大量的数字,例如计算面积...

    nbs.rar_NBS加法器_nbs_fas_nbs.fas

    《NBS加法器及其在CAD插件中的应用》 NBS加法器,全称为“Number-Based Summation”,是一种专为处理含有文本中数字的加法问题而设计的工具。在计算机辅助设计(CAD)领域,它作为一款插件,能够智能地识别并累加...

    nbs.rar_NBS

    标题中的“nbs.rar_NBS”可能是指一个名为“nbs”的RAR压缩文件,其中包含与数字求和相关的数据或程序。RAR是一种流行的文件压缩格式,用于存储和传输多个文件在一个压缩包内。NBS在这里可能是一个特定的缩写,但...

    nbs博客系统 v1.0

    2、绝对安全,杜绝一切漏洞,让您放心使用; 3、追求简洁高效,nbs没有一切冗余的功能,代码简洁高效,是目前代码最少的blog系统; 4、高度可定制性,自由的模板和丰富的后台选项,让你可以随心所欲的构建个性博客...

    NBS求和工具.rar

    AutoCAD自动求和插件,简单实用,需要的可以试下 ,AutoCAD自动求和插件,简单实用,需要的可以试下 ,AutoCAD自动求和插件,简单实用,需要的可以试下

    nbs.rar_NBS_cad文字_nbs cad 源码_nbs.fas_site:www.pudn.com

    标题中的“nbs.rar_NBS_cad文字_nbs cad 源码_nbs.fas_site:www.pudn.com”表明这是一个与CAD(计算机辅助设计)相关的资源,具体是NBS系统的一个源码包,可能包含了用于处理CAD图纸中文字的工具或功能。"site:...

    nbs博客系统 v1.0.rar

    2、绝对安全,杜绝一切漏洞,让您放心使用; 3、追求简洁高效,nbs没有一切冗余的功能,代码简洁高效,是目前代码最少的blog系统; 4、高度可定制性,自由的模板和丰富的后台选项,让你可以随心所欲的构建个性博客...

    nbs博客系统PHP版 v1.0.rar

    2、绝对安全,杜绝一切漏洞,让您放心使用; 3、追求简洁高效,nbs没有一切冗余的功能,代码简洁高效,是目前代码最少的blog系统; 4、高度可定制性,自由的模板和丰富的后台选项,让你可以随心所欲的构建个性博客...

    杨树全基因组NBS类型抗病基因分析

    杨树全基因组NBS类型抗病基因分析,吴大强,蔡诚,本研究对杨树(Populus trichocarpa)中含有核苷酸结合区(NBS)结构的候选抗病基因进行了全基因组的分析研究,包括NBS类型基因总量的的�

    nbs 1.1 发包工具

    发包工具,可以发送各种带vlan的报文,支持ipv6,tcp等

    nbs博客系统 1.0.rar

    2、绝对安全,杜绝一切漏洞,让您放心使用; 3、追求简洁高效,nb是没有一切冗余的功能,代码简洁高效,是目前代码最少的blog系统; 4、高度可定制性,自由的模板和丰富的后台选项,让你可以随心所欲的构建个性...

    nbs-基于需求的专业化销售技巧.ppt

    nbs-基于需求的专业化销售技巧.ppt

    nbs.rar_nbs系统

    nbs博客系统(无限分类),主要功能:一级分类和无限级分类两种版本,tags,trackback;相册功能,评论功能,rss,自由定制皮;关键技术:php,部分缓存的实现,部分ajax技术体验,模板技术(学习phpwind模版机制...

    NBS_脑功能网络_脑网络分析_脑连接工具箱_脑网络_matlab_

    2. **网络属性计算**:计算网络的各种属性是BCT的核心功能之一。这包括节点度、聚类系数、平均路径长度等基本网络统计量,以及复杂性指标如小世界指数、无标度指数等。这些属性可以帮助我们了解网络的整体组织结构。...

    [博客空间]Nbs博客系统 v1.0_nbs.zip

    2. **内容管理**:系统应包含一个强大的后台管理系统,允许用户创建、编辑、删除和分类文章。它可能有Markdown或富文本编辑器支持,方便用户编写和格式化内容。此外,预览功能能让用户在发布前查看文章效果。 3. **...

    NBS.rar_图像测量

    NBS距离越小,表示两个像素的颜色越相似。 6. **距离修正与重遍历**:在"进度:以0.5(距离修正后,重新履历所有颜色)"中提到的可能是对计算结果的一种优化策略。在初始计算后,如果发现某些距离值不理想,可能会...

    视频编码未来简史,值得一看

    2. **智能分析**:传统的视频编码技术主要关注数据压缩,但随着人工智能技术的发展,如何在编码过程中提取有用的信息用于后续的视频分析成为新的研究方向。 #### 下一代编码标准 - **联合视频探索团队(Joint Video...

    nbs.rar_nbsjs

    2. **采用一级分类**:博客系统通常有分类功能,而这里提到的“放弃无限级分类,采用一级分类”,意味着开发者选择了更为简洁的结构。一级分类简化了数据模型,降低了复杂性,使用户更容易理解和导航,也降低了后台...

Global site tag (gtag.js) - Google Analytics