【问题标题】:Strange behaviour when accessing Oracle 8i table from servlet从 servlet 访问 Oracle 8i 表时的奇怪行为
【发布时间】:2009-04-10 08:34:57
【问题描述】:

首先介绍一下背景,我使用的是 jdk 1.6。我在 Oracle 8i DB 中有一个 2 列的表,其中包含一个非常简单的代码到字图。没有奇怪的字符。两列都是 varchar。

在我的台式机上,当我执行以下操作时:

        OracleDataSource ods = new OracleDataSource();

        ods.setDriverType("thin");
        ods.setServerName("DBserver.db");
        ods.setDatabaseName("DB");
        ods.setPortNumber(1527);
        ods.setUser("user");
        ods.setPassword("password");

        Connection connection = ods.getConnection();
        Statement stmt = connection.createStatement();
        ResultSet res = stmt.executeQuery(SQL);

        CachedRowSet crs = new CachedRowSetImpl();
        crs.populate(res);
        while (crs.next()) {
            System.out.println("ID: " + crs.getString(1) +
                               ",  Name: " + crs.getString(2));
        }

一切正常,我得到了我期望的结果(getString(1) 和 getString(2) 的返回值与它们存储在表中的完全一样)

但是:

当我在 Tomcat 服务器上的 servlet 中执行完全相同的代码时(我使用简单的 applet servlet 模型来访问表并返回对 applet 的响应),crs.getString(int) 会返回类似: 0x53, 0x54, 0x4E 等等。

我不确定这意味着什么,如果能提供任何帮助,我将不胜感激。我想知道从哪里开始解决问题。

【问题讨论】:

  • Oracle 8i 已经十年了,不要指望完美支持。

标签: java oracle servlets cachedrowset


【解决方案1】:

Oracle 8i 已经很老了。我相信 1999 年或 2000 年。您的 jdk 和 Tomcat 以及 Oracle 和 JDBC 的组合是否经过认证/支持?

【讨论】:

  • 看来你是对的。更改为 Oracle 9i 就像一个魅力。我的猜测是,jdk、tomcat 和 oracle 的混合并不是一个好的选择。谢谢!
猜你喜欢
  • 2018-05-16
  • 2012-02-25
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2017-10-29
  • 2016-03-22
  • 1970-01-01
相关资源
最近更新 更多