Can';t从ResultSet获取值以在Java中填充jLabel
我不熟悉编程,并尝试将sql查询中的值分配给jLabel。程序编译和运行时没有错误,但不会更改jLabel。根据我的研究,这应该行得通,但不行。数据库连接正常。调试时,问题似乎出在以下行: 双d=rs.getDouble(1); 这是我的密码:Can';t从ResultSet获取值以在Java中填充jLabel,java,jlabel,derby,resultset,Java,Jlabel,Derby,Resultset,我不熟悉编程,并尝试将sql查询中的值分配给jLabel。程序编译和运行时没有错误,但不会更改jLabel。根据我的研究,这应该行得通,但不行。数据库连接正常。调试时,问题似乎出在以下行: 双d=rs.getDouble(1); 这是我的密码: String sum = "SELECT SUM(TOTAL) FROM PUNCHES WHERE EID = 1"; Statement st = con.createStatement(); ResultSet rs =
String sum = "SELECT SUM(TOTAL) FROM PUNCHES WHERE EID = 1";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sum); //rs should have 1 row, 1 column
double d = rs.getDouble(1);
lblGrandTotal.setText(String.valueOf(d));
如果我用12.345这样的任意值替换d,它就可以工作。您忘记调用
rs.next()
好的,您在一个复杂的程序中遇到了一个问题,这个程序结合了GUI代码和SQL数据库代码。我强烈建议您不要这样做,而是将代码划分为可单独测试的较小单元,并将GUI与数据库代码分开测试。在合并之前让他们都工作。谢谢吉姆。这就解决了问题。我没有意识到我需要迭代一个只有一个结果的结果集。虚拟光标位于查询后的第一行之前。
ResultSet rs = st.executeQuery(sum); //rs should have 1 row, 1 column
if (rs.next())
{
double d = rs.getDouble(1);
...
}
else
// Failed to get result, do something useful here