我在 Java 中执行 SQL 查询时遇到问题,该查询在 MySQL 中运行良好,但在 Oracle 中不运行。以下是我的查询:
String verifyLogin = "SELECT COUNT(*) FROM LoginDB WHERE username = '1234' AND password = '1234'";
字符串
问题是,这个查询总是返回0
,即使在Oracle数据库中有一条记录包含username = 1234
和password = 1234
。
我查了几件事:
两个数据库(MySQL 和 Oracle)的查询代码相同,我确保用户名和密码与查询中的完全相同,并且我有适当的权限在 Oracle 中查询LoginDB
表。
是否有某些特定于 Oracle 数据库的东西导致了这种行为?我是否需要调整查询语法或其他东西来使其工作?
谢谢你的帮助
1条答案
按热度按时间wgx48brx1#
确保您
COMMIT
您的数据。在Oracle中,如果不执行
COMMIT
,则只有创建数据的会话可以看到未提交的数据,而其他会话(即使是属于同一用户的会话)永远不会看到未提交的数据。例如,行为可以解释为:
1.如果您在SQLPlus中创建数据,但没有
COMMIT
数据或关闭会话。1.然后,如果你从Java查询数据,那么它将连接到数据库并创建一个新的会话(即使你作为同一个用户连接),然后你永远不会看到未提交的数据。
1.但是如果您返回到SQLPlus中的打开会话,那么您将看到数据以其未提交的形式存在于该会话中。
1.要在其他会话中查看它,
COMMIT
数据。