【问题标题】:HSQL Statenment with sum in Java doesnt workJava中带有sum的SQL语句不起作用
【发布时间】:2017-01-11 15:02:39
【问题描述】:

我在我的 java 程序中使用嵌入式 hsql 数据库。 我想写一个这样的hsql语句:

statement.executeQuery("SELECT sum(Points) FROM Table");

一开始我试过这个:

String column = "Points";   

statement.executeQuery("SELECT sum(\""+column+"\") FROM \""+table+"\"");
java.sql.SQLException: Column not found: Points

下一个:

statement.executeQuery("SELECT sum(POINTS) FROM \""+table+"\"");
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: POINTS

下一次尝试,不应该只为你工作:-)

statement.executeQuery("SELECT sum(\'"+column+"\') FROM \""+table+"\"");
java.sql.SQLSyntaxErrorException: incompatible data type in operation

如果我试试这个:

statement.executeQuery("SELECT \""+column+"\" FROM \""+table+"\"");

完美运行

只是为了告诉你我的列存在于我的表中。

此声明:

SELECT sum("Points") as test FROM "MyTable"

在 SQuirrel 客户端版本 3.7 中运行

知道我的问题吗?

【问题讨论】:

    标签: java sum hsqldb


    【解决方案1】:

    在 SQuirrel 中有效的相同语句应该有效。这是与 Java 引用相同的语句:

    statement.executeQuery("SELECT sum(\"Points\") FROM \"MyTable\"");
    

    看起来您正在从您的程序和 SQuirrel 连接到不同的数据库。尝试在 SQuirrel 和您的程序中使用相同的数据库文件绝对路径。您不能同时连接,因此您需要在从程序连接之前关闭 SQuirrel 中的数据库。

    【讨论】:

    • 这不是问题。当 iam 使用我的 java 程序连接到 DB 时,Squirrel 已关闭。
    • 问题是你没有连接到相同的数据库文件。
    • 问题不是这个!松鼠连接到同一个数据库。我认为 sum 语句需要其他引号。
    • 我已经添加了与你说在 SQuirrel 中有效的语句等效的 Java
    • 感谢您的工作,但您的语句与此语句相同。executeQuery("SELECT sum(\""+column+"\") FROM \""+table+"\""); java.sql.SQLException: Column not found: Points I try your statement got the same Exception
    【解决方案2】:

    这些是我的导入

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    

    这个语句也没有运行:

    statement.executeQuery("SELECT sum(\"Points\") FROM \"MyTable\"");
    

    也许其他人的解决方案:

    "SELECT sum(\"Punkte\") as TEST FROM \"Match_Stats\"");   
    while(table_01.next()){
        players.get(i).setPoints(table_01.getInt("TEST"));
    }
    

    别名 TEST 是关键。

    【讨论】:

    • 好的,我明白了!我需要为列点写一个别名。 "SELECT sum(\"Points\") as TEST FROM \"MyTable\"");问题不在于语句,而在于 table_01.getInt("Points")。将其更改为 table_01.getInt("TEST") 并且可以正常工作。有人知道为什么吗?
    • 这是因为sum("Points") 不是名为"Points" 的列。
    猜你喜欢
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多