Java JDBC SQL查询结果不一致

Java JDBC SQL查询结果不一致,java,sql,jdbc,Java,Sql,Jdbc,从SQLiteStudio提交查询将从视图返回预期结果。 但是,当用java从我的程序发送相同的查询时,某些查询的结果是不同的 ie:从PartRevs中选择Rev,其中PartNumber='800111' 当在SQLiteStudio中执行时,将返回“B”的预期结果。但是,如果从JAVA执行相同的查询,它将返回“A”。两个查询只返回一个结果 这种情况并非始终如一。大多数查询都可以工作,但有时不工作 给定零件的“修订版”或“修订版”来自另一个名为“ECO_TDA_Linewise”的表格。

从SQLiteStudio提交查询将从视图返回预期结果。 但是,当用java从我的程序发送相同的查询时,某些查询的结果是不同的

ie:从PartRevs中选择Rev,其中PartNumber='800111'

当在SQLiteStudio中执行时,将返回“B”的预期结果。但是,如果从JAVA执行相同的查询,它将返回“A”。两个查询只返回一个结果

这种情况并非始终如一。大多数查询都可以工作,但有时不工作

给定零件的“修订版”或“修订版”来自另一个名为“ECO_TDA_Linewise”的表格。每次发布给定零件的新版本时,都会添加一个索引号不断增加的新行

我相信问题来自“PartRevs”视图的工作方式。在许多其他表和查询中,这是唯一存在问题的表和查询

以下是与数据库交互的代码块:

public String GetRevision(String PartNumber) {
        String sqlStatement = "SELECT Rev FROM PartRevs WHERE PartNumber = '" + PartNumber + "'";
        return getDatabaseResult(sqlStatement, "Rev");
    }

您的jdbc结果集中有多少个条目用于该零件号?你能展示你的java代码在哪里从集合中提取结果吗?结果集中只有一个条目,这是一个好问题,我做了测试。我还添加了代码。像这样的问题通常是由于查询的数据库与在另一个程序中查询的数据库不同。顺便说一句:将值连接到查询字符串中是一种糟糕的做法:它会使SQL容易受到SQL注入的攻击。请了解准备好的语句和参数。此外,您当前拥有的代码是无效的JDBC:您在尝试
rs.getString(Column)
之前从未调用
rs.next()
,因此结果集位于第一行之前。在这种情况下,兼容JDBC的驱动程序将引发异常。是否可能是您的查询产生了异常,并且程序的某些其他部分默认显示
A
?您在查询中连接字符串。不需要。您的jdbc结果集中有多少个条目用于该零件号?你能展示你的java代码在哪里从集合中提取结果吗?结果集中只有一个条目,这是一个好问题,我做了测试。我还添加了代码。像这样的问题通常是由于查询的数据库与在另一个程序中查询的数据库不同。顺便说一句:将值连接到查询字符串中是一种糟糕的做法:它会使SQL容易受到SQL注入的攻击。请了解准备好的语句和参数。此外,您当前拥有的代码是无效的JDBC:您在尝试
rs.getString(Column)
之前从未调用
rs.next()
,因此结果集位于第一行之前。在这种情况下,兼容JDBC的驱动程序将引发异常。是否可能是您的查询产生了异常,并且程序的某些其他部分默认显示
A
?您在查询中连接字符串。不要。
public String getDatabaseResult(String sqlStatement, String Column) {
        String result = "";
        try (Connection conn = FulfillmentWorkorders.connect();
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery(sqlStatement)) {

            result = rs.getString(Column);
            conn.close();

        } catch (SQLException e) {
            System.out.println("\"" + sqlStatement + "\" throws exception: " + e.getMessage());
        }
        return result;
    }