国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
[java語(yǔ)言]spring對(duì)oracle的clob和StoredProcedure 的處方法
[java語(yǔ)言]spring對(duì)oracle的clob和StoredProcedure 的處理

[java語(yǔ)言]spring對(duì)oracle的clob和StoredProcedure 的處理
原創(chuàng)空間

邢紅瑞 發(fā)表于 2005-4-21 9:16:20

使用spring后發(fā)現(xiàn)和oracle的驅(qū)動(dòng)有了不解之緣,最初是spring的jdbc存取oracle的clob字段,出現(xiàn)

org.springframework.transaction.TransactionSystemException: Could not roll back JDBC transaction; nested exception is java.sql.SQLException: Io 異常: Software caused connection abort: socket write error

問(wèn)了Juergen Hoeller幾次,也沒(méi)有知道原因所在。只有加入了hibernate解決此問(wèn)題,hibernate如何解決oracle的clob字段,看我以前的帖子(http://blogger.org.cn/blog/more.asp?name=hongrui&id=1171)。

后來(lái)看到agilejava也遇到這類問(wèn)題,原來(lái)是ojdbc14.jar驅(qū)動(dòng)的問(wèn)題,改為9.2.0.5.0,一切OK了。相關(guān)blog(http://agilejava.blogbus.com/logs/2005/02/1031034.html

因?yàn)楝F(xiàn)在大量用到存儲(chǔ)過(guò)程,打算使用spring的StoredProcedure 進(jìn)行操作,發(fā)現(xiàn)運(yùn)行到SQLErrorCodes loaded: [DB2, HSQL, MS-SQL, MySQL, Oracle, Informix, PostgreSQL, Sybase] 就停了,沒(méi)有辦法,問(wèn)了Thomas Risberg,他說(shuō)程序沒(méi)有錯(cuò)誤,我當(dāng)時(shí)就暈了,后來(lái)聽說(shuō)虎子做過(guò)類似的工作,代碼給虎子看,也說(shuō)沒(méi)錯(cuò),而且在它那里運(yùn)行正常,我生氣了。聽從他的建議,加入spring源碼調(diào)試,也不知道問(wèn)題所在。認(rèn)為是數(shù)據(jù)庫(kù)的問(wèn)題,換了臺(tái)數(shù)據(jù)庫(kù)還是不行。最后把防火墻撤掉,讓虎子直接訪問(wèn)數(shù)據(jù)庫(kù),他那里一切正常。問(wèn)題明朗了,數(shù)據(jù)庫(kù)一樣的,代碼一樣的,唯一不同的是jdk和oracle驅(qū)動(dòng),他的jdk1.425,我得1.421,差別不大,那就是驅(qū)動(dòng)的問(wèn)題,我換了以前用的ojdbc14.jar,現(xiàn)在用的版本10.1.0.2.0,換到9.0.2.0.0,一切OK,此時(shí),我已經(jīng)出離憤怒了,建議oracle驅(qū)動(dòng)最好是自己命名,把文件名加上版本信息,要不會(huì)死人的。

下面是我作測(cè)試的PLSQL代碼

CREATE OR REPLACE package chapter_13 as
TYPE rs IS REF CURSOR ;
procedure founder(oFields out rs);

end;
/CREATE OR REPLACE package body chapter_13 as

PROCEDURE founder(oFields out rs) IS
BEGIN
open oFields for
   select * from dept;
END founder;
end;
java代碼

package springtest;

import java.sql.*;
import java.util.*;

import javax.sql.*;
import oracle.jdbc.driver.OracleTypes;
import org.springframework.jdbc.core.*;
import org.springframework.jdbc.datasource.*;
import org.springframework.jdbc.object.*;

public class TestDao {
    public static void main(String[] args) throws Exception {
        new TestDao().execute();
    }

    public void execute() throws Exception {
        DataSource ds = new DriverManagerDataSource(
                "oracle.jdbc.driver.OracleDriver",
                "jdbc:oracle:thin:@localhost:1521:mydb",
                "scott", "tiger");

        DemoStoredProcedure proc = new DemoStoredProcedure(ds);
        Map params = new HashMap();

        proc.execute(params);

    }

    private class DemoStoredProcedure extends StoredProcedure {
        public static final String SQL = "chapter_13.founder";


        public DemoStoredProcedure(DataSource ds) {
            setDataSource(ds);
            setSql(SQL);
            setFunction(false);

            declareParameter(
                    new SqlOutParameter(
                            "obrief", OracleTypes.CURSOR, new RowMapper() {
                public Object mapRow(ResultSet rs, int rowNum) throws
                        SQLException {
                    System.out.println(rs.getString(1));

                    return rs.getString(1);
                }
            }
            ));

            compile();
        }
    }

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JAVA完全控制Oracle中BLOB CLOB說(shuō)明
通過(guò)JDBC操縱Oracle數(shù)據(jù)庫(kù)LOB字段的分析
JDBC快速入門教程
JDBC詳解
JAVA連接ORACLE數(shù)據(jù)庫(kù)
學(xué)習(xí)java需要會(huì)哪些知識(shí)才能夠去應(yīng)聘工作?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服