通过SQL查询检索列的总值并通过JavaFX显示
我试图从SQl查询中获取总值,但它给出的错误是列名不存在,其中tbl_internet是表名,billFine是数据类型为double的列,total_fine是标签名通过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())
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对我认为最好使用名称而不是索引,因为它能更清楚地传达程序员的想法。