<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ù)雜...
    主站蜘蛛池模板: 久久免费区一区二区三波多野| 国产精品亚洲综合| 蜜桃视频在线观看免费视频网站WWW | 四虎永久免费观看| 亚洲av永久中文无码精品| 在线播放免费播放av片| 亚洲精品无码av中文字幕| 国产精品视_精品国产免费 | 亚洲尹人九九大色香蕉网站| 免费91麻豆精品国产自产在线观看| 亚洲一区二区三区无码中文字幕| 黄 色一级 成 人网站免费| 国产亚洲精品观看91在线| 久久免费线看线看| 亚洲一级毛片免费看| 全免费一级午夜毛片| 免费夜色污私人影院网站电影| 国产国拍精品亚洲AV片| 免费视频成人手机在线观看网址| 亚洲综合网美国十次| 最新69国产成人精品免费视频动漫| 国产AV无码专区亚洲AV麻豆丫| 亚洲精品国产日韩无码AV永久免费网 | 亚洲第一网站免费视频| 亚洲欧洲精品成人久久曰| 又爽又高潮的BB视频免费看| 成人性生交大片免费看中文| 亚洲日本视频在线观看| 免费理论片51人人看电影| eeuss影院ss奇兵免费com| 亚洲精品私拍国产福利在线| 成人人观看的免费毛片| 国产免费人成视频在线播放播| 少妇中文字幕乱码亚洲影视| 免费看的一级毛片| 最近中文字幕大全免费版在线 | 免费萌白酱国产一区二区三区| 亚洲区视频在线观看| 亚洲国产av无码精品| **实干一级毛片aa免费| 无遮挡呻吟娇喘视频免费播放|