有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正在向查询中添加其他未指定字段

我在一个java程序中运行了一些查询,该程序使用PostgreSQL数据库和旧版本JDataStore的一些部分(用于与数据库交互的部分)。有时,查询从一次执行发送到数据库两次。更奇怪的是,发送的第一个查询与第二个查询略有不同,而且不正确。例如:

First Query (incorrect)
SELECT b."construct_id", c."instance_id", a.SymbolName, c.Address AddressDecimal,
       c.Description, b.ConstructName, a.DeclarationType, a.Symbol_id,
       a.SymbolType_id, a.Construct_id, a.Leaf 
FROM tblSymbolDeclaration a, tblLanguageConstructName b, tblSymbolInstance c  
WHERE a.Construct_id = b.Construct_id and a.Symbol_id = c.Symbol_id
  and a.DeclarationType = 1 and a.Root = 1

请注意该查询开头的两个字段,以及与此相比缺少“as”一词:

Second Query (correct)
SELECT a.SymbolName, c.Address as AddressDecimal, c.Description, 
       b.ConstructName, a.DeclarationType, a.Symbol_id, a.SymbolType_id,
       a.Construct_id, a.Leaf 
FROM tblSymbolDeclaration a, tblLanguageConstructName b, tblSymbolInstance c 
WHERE a.Construct_id = b.Construct_id and a.Symbol_id = c.Symbol_id 
  and a.DeclarationType = 1 and a.Root = 1

我们有一组使用的查询列表,第一个查询甚至不在该列表中。这是什么原因造成的?(很抱歉,我没有提供代码,但在这种情况下这样做是不可行的。)


共 (1) 个答案

  1. # 1 楼答案

    这个问题不只是像那样“改变”。我确定字段名“instance_id”没有在以太中创建。我认为这是一个错误,在构造查询本身

    1. 查询是如何构造并传递到数据库的
    2. 你到底在哪里看到了“不正确”的查询

    好的,这里是在黑暗中拍摄的,但是试着把你的查询改成这个,只是为了改变它。看看服务器会告诉你什么

    String myQuery = ""
    + "SELECT a.symbolname, "
    + "       c.address AS addressdecimal, "
    + "       c.DESCRIPTION, "
    + "       b.constructname, "
    + "       a.declarationtype, "
    + "       a.symbol_id, "
    + "       a.symboltype_id, "
    + "       a.construct_id, "
    + "       a.leaf "
    + "FROM   tblsymboldeclaration a "
    + "       INNER JOIN tbllanguageconstructname b "
    + "         ON a.construct_id = b.construct_id "
    + "       INNER JOIN tblsymbolinstance c "
    + "         ON a.symbol_id = c.symbol_id "
    + "WHERE  a.declarationtype = 1 "
    + "       AND a.ROOT = 1";