VARCHAR2列上的ResultSet.getString()返回空字符串 [英] ResultSet.getString() on VARCHAR2 column returns empty string

查看:383
本文介绍了VARCHAR2列上的ResultSet.getString()返回空字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

免责声明:我实际上对Oracle和Java也一无所知.问题出在其他一些开发人员在某个时间点完成然后离开公司的项目中.现在,我必须设置Web服务器,数据库并使其全部启动并运行.

Disclaimer: I don't actually know anything about nether Oracle nor Java. The issue is in a project that some other developer completed at some point in time and then left the company. Now I have to setup webserver, database and get it all up and running.

代码大致如下:

OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:<user>/<password>@localhost:1521:xe");
OracleConnection ocon = (OracleConnection)ods.getConnection();
OracleStatement stmt = (OracleStatement)ocon.createStatement();
OracleResultSet rs = (OracleResultSet)stmt.executeQuery("SELECT POLLID, QUESTION, ISMULTISELECT FROM POLL WHERE POLLID = " + pollID);

if (!rs.next()) {
    System.out.println("No rows found.");
    return false;
}
this._PollID = rs.getInt("POLLID");
this._Question = rs.getString("QUESTION");
this._IsMultiSelect = rs.getBoolean("ISMULTISELECT");

POLLID和ISMULTISELECT列返回正确的值,如预期的那样.问题似乎总是返回空字符串.数据库中的值显然不是空的.

The POLLID and ISMULTISELECT columns return correct values as expected. The QUESTION seem to always return empty string. The value in the DB is obviously not empty.

rs.getAsciiStream("QUESTION").available()也返回零.

我在这里完全缺少明显的东西吗?

Am I missing something completely obvious here?

  • sqlplus返回varchar2值就很好

  • sqlplus returns varchar2 value just fine

通过odbc连接(而不是通过Thin连接)也可以使事情正常工作

connecting via odbc (as opposed to thin) also makes things work

推荐答案

感谢所有答复.此时,看来问题出在瘦驱动程序和XE版本的Oracle之间.不幸的是,我们没有完整的版本(我们主要是ASP.NET/MS SQL开发人员),因此,我们现在必须坚持使用ODBC驱动程序,希望当我们将其推送到实际环境中时,该问题能够神奇地解决自身问题. (由第三方托管).做出的决定很糟糕,但是目前我看不到其他选择....

Thanks to everyone who replied. At this point it seems issue is between thin driver and XE version of Oracle. Unfortunately we don't have full version kickin' around (we are primarily ASP.NET/MS SQL developers), so we'll have to stick with ODBC driver for now and hope issue will magically resolve itself when we push it to live environment (hosted by third party). Very crappy assumption to make, but at this point I see no other options....

这篇关于VARCHAR2列上的ResultSet.getString()返回空字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆