通过SQL查询检索列的总值并通过JavaFX显示

通过SQL查询检索列的总值并通过JavaFX显示,java,sql-server,Java,Sql Server,我试图从SQl查询中获取总值,但它给出的错误是列名不存在,其中tbl_internet是表名,billFine是数据类型为double的列,total_fine是标签名 try { String sql = "select sum(billFine) from tbl_internet "; pst = con.prepareStatement(sql); rs = pst.executeQuery(); if(rs.next())

我试图从SQl查询中获取总值,但它给出的错误是列名不存在,其中tbl_internet是表名,billFine是数据类型为double的列,total_fine是标签名

try {
        String sql = "select sum(billFine) from tbl_internet ";
        pst = con.prepareStatement(sql);
        rs = pst.executeQuery();
        if(rs.next())
        {
            String sum= rs.getString("sum(billFine)");
            total_fine.setText(sum);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
错误描述

找不到com.microsoft.sqlserver.jdbc.SQLServerDriver>列名

关于错误 错误是告诉您jdbc找不到SQL列名。您正试图获取一个名为“sum(billFine)”的列,这是表中没有的名称

解决方案 使用以下查询
String sql=“选择sum(billFine)作为tbl\U internet的金额”

现在,将返回的结果集将有一个名为“”amount“的列,其中存储了总和值

现在,您需要使用
getDouble()
,而不是
getString()
,因为
sum()
应该返回一个double

然后使用
rs.getDouble(“金额”)获取金额

关于错误 错误是告诉您jdbc找不到SQL列名。您正试图获取一个名为“sum(billFine)”的列,这是表中没有的名称

解决方案 使用以下查询
String sql=“选择sum(billFine)作为tbl\U internet的金额”

现在,将返回的结果集将有一个名为“”amount“的列,其中存储了总和值

现在,您需要使用
getDouble()
,而不是
getString()
,因为
sum()
应该返回一个double


然后使用
rs.getDouble(“金额”)获取金额

只需通过
结果集中的列索引访问值即可(另请参见)。我更喜欢对所有查询使用索引,但
SELECT*
querys除外,因为这样可以避免多次硬编码列名,也可以避免传递错误的值,就像在这种情况下:

String sum = rs.getString(1);
您可能应该以
int
long
double
的形式访问总和

double sum = rs.getDouble(1);
total_fine.setText(Double.toString(sum));

只需通过
ResultSet
中的列索引访问该值(另请参见)。我更喜欢对所有查询使用索引,但
SELECT*
querys除外,因为这样可以避免多次硬编码列名,也可以避免传递错误的值,就像在这种情况下:

String sum = rs.getString(1);
您可能应该以
int
long
double
的形式访问总和

double sum = rs.getDouble(1);
total_fine.setText(Double.toString(sum));

这是可行的,但在我看来,将来更容易出现bug,如果你要更改查询,你可能还需要更改索引。不管怎样,你都需要在某处硬编码查询信息。您可以使用索引并避免列别名中的拼写错误,或者使用别名以避免在更改结果中的列顺序时必须更改代码……这会起作用,但在我看来,如果您要更改查询,将来更容易出现错误,您可能还需要更改索引。这样或那样,您需要在某处硬编码有关查询的信息。您可以使用索引并避免列别名中的拼写错误,或者使用别名以避免在更改结果中的列顺序时必须更改代码……这两种方法都可以很好地工作,但您实现的方式更好,因为在索引中有可能给出错误的列index@HuwaizaTahir对我认为最好使用名称而不是索引,因为它能以更清晰的方式传达程序员的想法。这两种方式都很好,但您实现的方式更好,因为在索引中有可能给出错误的列index@HuwaizaTahir对我认为最好使用名称而不是索引,因为它能更清楚地传达程序员的想法。