Java中带有sum的SQL语句不起作用
Posted
技术标签:
【中文标题】Java中带有sum的SQL语句不起作用【英文标题】:HSQL Statenment with sum in Java doesnt work 【发布时间】: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 中运行
知道我的问题吗?
【问题讨论】:
【参考方案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"
的列。以上是关于Java中带有sum的SQL语句不起作用的主要内容,如果未能解决你的问题,请参考以下文章
片段中带有 RequestPermission 的 registerForActivityResult 不起作用