Java中的SQL语句不能提取与MSSQL中相同的信息
我正试图从Java数据库中获取一些信息Java中的SQL语句不能提取与MSSQL中相同的信息,java,sql,mssql-jdbc,Java,Sql,Mssql Jdbc,我正试图从Java数据库中获取一些信息 String sql_get_Tot = " SELECT dbo.table1.Quantity * dbo.table2.CostPerIndivdual AS QC FROM dbo.table1 INNER JOIN dbo.table2 ON dbo._IISJoin.ItemID = dbo.table2.ItemID
String sql_get_Tot = "
SELECT
dbo.table1.Quantity * dbo.table2.CostPerIndivdual AS QC
FROM
dbo.table1
INNER JOIN
dbo.table2
ON dbo._IISJoin.ItemID = dbo.table2.ItemID
WHERE
dbo.table1.SupplierID = 2 AND
dbo.table1.ItemID = 1 AND
dbo.table1.InvoiceID = 2
";
state = con.createStatement();
total = state.executeQuery(sql_get_Tot);
totalsql = total.getFloat(1);
这在结果集中不返回任何内容
在MSSQL中运行完全相同的查询,我得到10.00
如果你知道这里出了什么问题,我已经检查了一些基础知识,比如连接到正确的数据库等等
感谢您提前提供的任何帮助。我相信“总计”是一个结果集。那么你需要做一个:
if(total.next()){
totalsql = total.getFloat(1);
...
我想你必须提到db名称来代替dbo,这样它才能工作mysql@ChakradharVyza-他根本没有提到MySQL,所以这不可能是解决方案。对于OP-您使用浮点值作为货币值。不建议这样做,尤其是因为您不能准确地表示像
.1
这样的值。在Java中,你应该使用BigDecimal
。你能不能至少建议他不要使用看起来是货币值的浮点值?嗨@Clockwork Muse。我知道你在说什么,但我不确定你用BigDecimal
是什么意思?当我看他的代码时,我可能也会使用float。你能举个例子,让我们明白你的意思吗?这听起来像是一个有趣的答案……请参阅到的一些答案(以及评论和链接)。还可以看看其中的一些。会计往往对零碎金额有非常严格的规定;请注意,虽然浮点具有定义良好的行为,但会计所遵循的规则并不相同,可表示的值通常是非直观的。