Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQL中SUM结果的数据类型_Java_Mysql_Sum_Return Type - Fatal编程技术网

Java MySQL中SUM结果的数据类型

Java MySQL中SUM结果的数据类型,java,mysql,sum,return-type,Java,Mysql,Sum,Return Type,在使用SUM时,我在将MySQL查询的结果转换为Java类时遇到了一些问题 在MySQL中执行简单求和时 SELECT SUM(price) FROM cakes WHERE ingredient = 'chocolate'; 由于price是一个整数,SUM有时返回字符串,有时返回整数,具体取决于JDBC驱动程序的版本 显然,服务器会告诉JDBC驱动程序,SUM的结果是一个字符串,JDBC驱动程序有时会“方便地”将其转换为整数。(见附件) Java代码使用一些and自动地用查询结果填充bea

在使用SUM时,我在将MySQL查询的结果转换为Java类时遇到了一些问题

在MySQL中执行简单求和时

SELECT SUM(price) FROM cakes WHERE ingredient = 'chocolate';
由于
price
是一个整数,
SUM
有时返回字符串,有时返回整数,具体取决于JDBC驱动程序的版本

显然,服务器会告诉JDBC驱动程序,
SUM
的结果是一个字符串,JDBC驱动程序有时会“方便地”将其转换为整数。(见附件)

Java代码使用一些and自动地用查询结果填充bean(列表)。但是,如果部署应用程序的服务器之间的数据类型不同,那么这显然不起作用

我不在乎是得到一个字符串还是一个整数,但我希望始终拥有相同的数据类型,或者至少提前知道将得到哪种数据类型


有没有办法知道MySQL
SUM
将从Java代码中返回哪个数据类型?或者有人知道更好的方法来处理这个问题吗?

这只是一个猜测,但可能转换为整数会迫使MySQL总是告诉它是整数

SELECT CAST(SUM(price) AS SIGNED) FROM cakes WHERE ingredient = 'marshmallows';

我以前从未使用过MySQL,所以我无法说出原因,但如果你说:

ResultSet rs = statement.executeQuery("SELECT SUM(price) FROM cakes WHERE ingredient = 'chocolate'");
int sum = 0;
if(rs.next())
size = Integer.parseInt(rs.getString(1));
那么,无论返回的数据类型如何,您都不应该有问题,正如文档所述:

String getString(int columnIndex)抛出SQLException
以Java编程语言中的字符串形式检索此ResultSet对象当前行中指定列的值

我发现
COALESCE(SUM(price),0)
非常适合在没有结果时始终确保字段返回0


请参阅:

棉花糖是怎么回事?我喜欢有棉花糖的蛋糕,所以我专注于摆弄驱动程序,完全忽略了mysql的解决方案:)多谢了,这个答案和评论刚刚开始在互联网上流传。在一个随机有趣的图片站点上注意到了它。@Dykam:那么,这个站点可能不是很有趣。使用java 11和mysql连接器j 8
ResultSet#getString
求和“bigint”返回一个带小数点的字符串,即“0”。因此不能用
parseInt