gpt4 book ai didi

java - jdbc 不运行 SQL Developer 运行的内容

转载 作者:行者123 更新时间:2023-12-01 11:55:16 26 4
gpt4 key购买 nike

因此,我在 Java 应用程序中使用 jdbc 来查询几个不同的数据库。我让用户输入他们的每个凭据。

其中一个数据库工作正常,但对于另一个数据库,我有两个问题。

对于其中一个查询:

select 语句运行良好,并从 SQL Developer(Oracle 的 SQL IDE)返回整行 5 项,但是当从 Java 应用程序执行时,只有第二列和第三列将数据放入我的变量中,其余的都是空字符串。这是 SELECT 语句:

SELECT CD_DIST, CD_RQMT, TS_OPER_LAST_UPDTD, ID_OPER_LAST_UPDTD, ST_RQMT
FROM TWMMILESTONERQMT
WHERE CD_WR = '219033'
and CD_RQMT = '555';

这是 Java 代码:

        String wrNumber = ((Integer)(p.myWRNumber)).toString();
String selectStatement =
"SELECT CD_DIST, CD_RQMT, TS_OPER_LAST_UPDTD, ID_OPER_LAST_UPDTD, ST_RQMT " +
"FROM TWMMILESTONERQMT " +
"WHERE CD_WR = '" + wrNumber + "' " +
"and CD_RQMT = '555' ";
System.out.println(selectStatement);

PreparedStatement sel1 = stormsConn.prepareStatement(selectStatement);
ResultSet res = sel1.executeQuery();
while(res.next())
{
String district = res.getString("CD_DIST");
String requirement = res.getString("CD_RQMT");
String lastUpdatedTimestamp = res.getString("TS_OPER_LAST_UPDTD");
String lastUpdatedPerson = res.getString("ID_OPER_LAST_UPDTD");
String requirementState = res.getString("ST_RQMT");
if(district != null)
{
p.myRequirementDistrict = district;
}
if(requirement != null)
{
p.myRequirementNumber = requirement;
}
if(lastUpdatedTimestamp != null)
{
p.myRequirementLastUpdatedTimestamp = lastUpdatedTimestamp;
}
if(lastUpdatedPerson != null)
{
p.myRequirementLastUpdatedPerson = lastUpdatedPerson;
}
if(requirementState != null)
{
p.myRequirementState = requirementState;
}
}

res.close();
sel1.close();

对于另一个查询,它在 SQL Developer 中再次运行良好,但是当我在 Java 应用程序中运行它时,我收到此异常:

java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

对于这两个查询,我使用与 SQL Developer 中使用的相同的凭据,否则我会怀疑这是权限问题。我已经为此绞尽脑汁几个小时了,但没有成功。

更新(已解决):

对于异常(exception)情况,我使用了错误的连接来运行查询,因此我在错误的数据库中查找表。难怪没找到。

至于空白结果列之谜,显然Oracle DB中的varchar2类型列无法使用jdbc驱动程序的.getString(...)函数。相反,必须使用 .getAsciiStream(..) 函数,然后该 InputStream 可以转换为 String真的很糟糕,它没有警告您或任何无法以这种方式返回该数据类型的内容。我认为它应该抛出异常,或者在 jdbc 驱动程序中实现。

感谢大家的帮助!

最佳答案

如果他们是相同的用户,这些程序是否在不同的机器上运行?是否有 IP 限制?在java端为同一个表编写一个简单的选择查询,不带参数“从 TWMMILESTONERQMT 选择 CD_DIST”看看这是否有效

关于java - jdbc 不运行 SQL Developer 运行的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28505393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com