<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 33, comments - 46, trackbacks - 0, articles - 2
    參考:http://blog.csdn.net/horsefaced/archive/2007/08/16/1746888.aspx

    這個(gè)異常源自于oracle驅(qū)動(dòng)面對(duì)一個(gè)數(shù)值型的返回字段時(shí),在得到指定的字段小數(shù)點(diǎn)右邊的數(shù)值數(shù)量時(shí)(Gets the designated column's number of digits to right of the decimal point.這個(gè)是原文),居然會(huì)返回-127,而oracle本身的cacheRowSet實(shí)現(xiàn)不允許這種情況出現(xiàn),于是就會(huì)報(bào)標(biāo)題所說(shuō)的異常。

    對(duì)于一般的做法,需要修改很多地方,包括ResultSet的decorate類,還有Spring的SqlRowSetResultSetExtractor

    所謂頭痛醫(yī)頭,腳痛醫(yī)腳,這里提供一種方法直接從oracle jdbc驅(qū)動(dòng)入手,徹底從源頭上修改掉該問(wèn)題:
    反編譯ojdbc14.jar(Oracle 9i驅(qū)動(dòng)為例)

    package oracle.jdbc.driver;

    public class OracleResultSetMetaData


    目標(biāo)方法:
    public int getScale(int paramInt)
        throws SQLException
      {
        int i = getValidColumnIndex(paramInt);
        return this.statement.getDBDescription()[i].scale;
      }

    使用javassist編寫一段代碼:
     public  void crackOracleDriver() {
            ClassPool pool 
    = ClassPool.getDefault();
            
    try {
                pool.insertClassPath(
    "E:\\allproject\\bpmtrans\\lib\\ojdbc14.jar");
                CtClass cc 
    = pool.get("oracle.jdbc.driver.OracleResultSetMetaData");
                System.out.println(cc);
                CtClass[] param 
    = new CtClass[1] ;
                param[
    0]=pool.get("int");
                CtMethod a 
    = cc.getDeclaredMethod("getScale",param);
                System.out.println(a);
                a.setBody(
    "{int i = getValidColumnIndex($1);\n" +
                        
    "    int res=statement.getDBDescription()[i].scale;\n" +
                        
    "return res<0?0:res; }");
                cc.writeFile(
    "c:\\");

            }
     catch (Exception e) {
                e.printStackTrace();
            }

        }

    將生成的class置換原來(lái)的class,大功告成!

    這個(gè)所謂的精度,一般來(lái)說(shuō),修改了應(yīng)該沒(méi)有多大問(wèn)題的

    Feedback

    # re: 修改驅(qū)動(dòng)解決SqlRowSet的Invalid scale size. Cannot be less than zero異常的處理辦法[未登錄](méi)  回復(fù)  更多評(píng)論   

    2009-11-11 18:57 by jack
    cacheRowSet不行
    但改用resultSet就可以了...
    不要搞得這么復(fù)雜...
    主站蜘蛛池模板: 免费黄色福利视频| 亚洲国产精品一区二区九九| 亚洲人成自拍网站在线观看| 免费一看一级毛片| 无码一区二区三区免费| 亚洲国产精品成人AV在线| 国产亚洲精品a在线观看| 最近免费中文字幕mv在线电影| 亚洲色偷偷偷综合网| 国产精品亚洲综合专区片高清久久久| 久久亚洲免费视频| 亚洲AV无码男人的天堂| 亚洲国产成人片在线观看| 香蕉高清免费永久在线视频| 99精品免费视品| 亚洲色成人四虎在线观看| 久久亚洲国产精品| 国产精品无码一二区免费| 精品熟女少妇av免费久久| 美女黄网站人色视频免费| 亚洲国产综合第一精品小说| 亚洲国产中文字幕在线观看| av无码久久久久不卡免费网站| 国产精品九九久久免费视频 | 免费91最新地址永久入口| 亚洲精品国产精品| 久久亚洲日韩看片无码| 亚洲高清偷拍一区二区三区 | 成人免费视频软件网站| av永久免费网站在线观看| 亚洲精品无码久久久久牙蜜区| 亚洲AV午夜福利精品一区二区| 国产免费拔擦拔擦8x| 免费观看无遮挡www的视频| 最新国产乱人伦偷精品免费网站 | 成年轻人网站色免费看| 久久精品免费观看| 国产va免费精品| 黄色a三级三级三级免费看| 国产精品亚洲片在线va| 4480yy私人影院亚洲|