VARCHAR2 列上的 ResultSet.getString() 返回空字符串

2024-01-09

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

代码大约是这样的:

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 列按预期返回正确的值。问题似乎总是返回空字符串。 DB中的值显然不为空。

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

我在这里错过了一些完全明显的东西吗?

EDIT:

  • sqlplus 返回 varchar2 值就好了

  • 通过 odbc 连接(而不是 Thin)也能让事情正常进行


所以没有例外,您没有使用保留字...也许尝试使用其他驱动程序,或者选择其他表并尝试从空的 QUESTION 列开始,然后添加一些值并进行调试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VARCHAR2 列上的 ResultSet.getString() 返回空字符串 的相关文章

随机推荐