SQL Sum Query 在 PHPmyAdmin 中有效,但在 Java resutset 中无效
Posted
技术标签:
【中文标题】SQL Sum Query 在 PHPmyAdmin 中有效,但在 Java resutset 中无效【英文标题】:SQL Sum Query works in PHPmyAdmin, but not in Java resutset 【发布时间】:2020-01-06 02:43:15 【问题描述】:我有一个名为“事务”的表。它有 5 个属性:Date、Description、Amount、Clientname、Transaction_ID,其中 Transaction_ID 是主键。在示例数据中,客户名称“John Smith”有两笔交易,他每笔花费 100.10 和 56.56。 SQL Query 在 phpMyAdmin 中返回 156.66 的预期结果,但 JDBC 似乎无法在 ResultSet 中识别它。
这是我的代码:
public void calculate_client_spending() throws SQLException
ConnectionClass Databaseloader = new ConnectionClass();
Databaseloader.getConnection();
String sql = "SELECT SUM(Amount) AS total FROM Transactions WHERE Clientname = 'John Smith';";
ResultSet rs = Databaseloader.executeSQLRequestCommand(sql);
// rs.next();
// System.out.println(sum);
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
System.out.println(numberOfColumns);
// get the column names; column indexes start from 1
for (int i = 1; i < numberOfColumns + 1; i++)
String columnName = rsMetaData.getColumnName(i);
// Get the name of the column's table name
if ("total".equals(columnName))
System.out.println("Bingo!");
rs.last();
int count = rs.getRow();
rs.beforeFirst();
System.out.println(count);
while (rs.next())
Results_trasactions.setText("");
System.out.println("The total profits today are: " + rs.getString(1));
此查询在此示例中返回 null,但如果我执行 rs.getDouble(1),它将返回 0。知道这里可能存在什么问题吗?我能够使类似的 SUM 查询工作,例如所有客户端的 SUM 和 WHERE 子句似乎适用于我的主键,但是即使 SQL 在 PHPmyadmin 中有效,这个特定的 Query JDBC 似乎也不喜欢它这让我想相信这是一个 Java 问题而不是 SQL 问题。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:不幸的是,这对于评论来说太长了:
不是刻薄的意思,但也许您不应该创建一个新帐户来再次回答您已删除的问题 (https://***.com/questions/59570469) -> Google Cache - 而且,您使用的数据库类会泄露您的“真实" 帐户 (How to retrieve the "total" variable representing a sum in a resultset) - 所以我再次投票结束这个问题。
但是,至少是一些提示:
ConnectionClass Databaseloader = new ConnectionClass();
Databaseloader.getConnection();
Databaseloader 不是任何默认的 JDBC 类,而是一些(糟糕的)编写的静态类,对我来说它看起来像是一个奇怪的包装器。你可以做到,但无论如何你都不会静态地做到这一点。通过将这些方法扔到 Google 中,您会发现:几乎什么都没有。
对于 mysql,您将获得这样的数据库连接:
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "sa", "sa")
而是使用连接对象。
我建议您执行以下操作:
-
了解如何使用 Java 连接数据库
了解如何创建和执行准备好的语句
了解如何从结果集中提取结果
了解参数绑定(避免 SQL 注入)
利润!
*** 很好地涵盖了所有这些主题。
【讨论】:
以上是关于SQL Sum Query 在 PHPmyAdmin 中有效,但在 Java resutset 中无效的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Range Sum Query - Mutable