将sql数据库中的值存储到java中的变量
当我尝试在项目中输入详细信息时,它在第一个try子句中给出了一个错误,即从数据库中重新获得的值没有插入到局部变量中。 该值似乎没有被解析为整数,而是给出了一个空值 连接器、preparedstatement、Resultset值在我的代码中没有定义,但在实际程序中它们连接正确 *将sql数据库中的值存储到java中的变量,java,mysql,Java,Mysql,当我尝试在项目中输入详细信息时,它在第一个try子句中给出了一个错误,即从数据库中重新获得的值没有插入到局部变量中。 该值似乎没有被解析为整数,而是给出了一个空值 连接器、preparedstatement、Resultset值在我的代码中没有定义,但在实际程序中它们连接正确 * ,, 如果这里有人能帮我解决我的错误那就太好了。 如注释中所述,我修改了第一个try-catch块以使用PreparedStatement功能,并将parseInt(getString())更改为一个简单的ge
如注释中所述,我修改了第一个try-catch块以使用
PreparedStatement
功能,并将parseInt(getString())
更改为一个简单的getDouble()
,您可以对第二个块应用相同的更改;)
我相信引发异常的是
Integer.parseInt(rs.getString(“worksum”))
,尝试将其更改为Double.parseDouble()
,或者您可以使用getDouble(“worksum”)
而不是getString()
,而且,您使用准备语句的方式是错误的,您不应该使用字符串连接,而是在创建语句后设置参数,请查看或感谢@ozerobd,Double.parseDouble()word,该值已成功插入文本字段。谢谢@ozerobd,我将查看文档并尝试更正我的错误无问题,很高兴我提供了帮助!^^还要检查我在回答中提供的解决方案,它考虑到了以预期方式使用PreparedStatement
int month = comb_month.getSelectedIndex() + 1;
try {
String sql1 = "SELECT SUM(hours) AS worksum FROM attandance WHERE month='" + month + "' AND userId='" + txtSearch.getText() + "'";
System.out.println(sql1);
pst = conn.prepareStatement(sql1);
rs = pst.executeQuery();
while (rs.next()) {
loggedinId.workinghours = Integer.parseInt(rs.getString("worksum"));
System.out.println(loggedinId.workinghours);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
try {
String sql2 = "SELECT COUNT(hours) AS workdays FROM attandance WHERE month='" + month + "' AND userId='" + txtSearch.getText() + "'";
System.out.println(sql2);
pst = conn.prepareStatement(sql2);
rs = pst.executeQuery();
while (rs.next()) {
loggedinId.noWorkdayts = Integer.parseInt(rs.getString("workdays"));
System.out.println(loggedinId.noWorkdayts);
}
int value = loggedinId.workinghours + loggedinId.noWorkdayts * 8;
System.out.println(value);
txtOverTime.setText(String.valueOf(value));
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
//loggedinId.workinghours and loggedinId.noWorkdayts are constent integer variables created in a seperate class
int month = comb_month.getSelectedIndex() + 1;
try {
String sql1 = "SELECT SUM(hours) AS worksum FROM attandance WHERE month=? AND userId=?;";
pst = conn.prepareStatement(sql1);
pst.setInt(1,month);
pst.setString(2,txtSearch.getText());
rs = pst.executeQuery();
while (rs.next()) {
loggedinId.workinghours = rs.getDouble("worksum");
System.out.println(loggedinId.workinghours);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}