英文:
Java: Retrieve and display value from database in label
问题
我正在使用Java Swing构建Java桌面应用程序。
这是选择服务方法:
```java
public void select(int id){
    String sql = "SELECT num_of_working_days FROM working_days_and_hours WHERE id = ?";
     try {
        connection = SQLite_Connection.connect();
        preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1, id);
        preparedStatement.execute();
        preparedStatement.close();
        System.out.println("DB status 1: " + preparedStatement.toString());
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }
}
我想在标签中显示此结果:
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
    // TODO add your handling code here:
    jLabel1.setText(String.valueOf(numberOfDays.select(1)));     
    // numberOfDays.select(1);
    System.out.println("Entered: " + jTextField1.getText());
}
在jLabel1.setText(numberOfDays.select(1));这一行出现错误,提示“在此处不允许使用void类型”。
我做错了什么?感谢有关此问题的任何输入。谢谢。
<details>
<summary>英文:</summary>
I am building a Java desktop app using Java Swing.
This is the select service method
public void select(int id){
String sql = "SELECT num_of_working_days FROM working_days_and_hours WHERE id = ?";
     try {
        connection = SQLite_Connection.connect();
        preparedStatement = connection.prepareStatement(sql);
        
        preparedStatement.setInt(1, id);
        
        preparedStatement.execute();
        preparedStatement.close();
        System.out.println("DB status 1: "+ preparedStatement.toString());
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }
}
I would like to display the result of this in a label
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
    // TODO add your handling code here:
    jLabel1.setText(numberOfDays.select(1));     
    // numberOfDays.select(1);
    System.out.println("Entered: " + jTextField1.getText());
   
} 
There is an error at 
```        jLabel1.setText(numberOfDays.select(1));     ```
Saying 'void type not allowed here'.
What am I doing wrong? Appreciate any input regarding this matter. Thank you.
</details>
# 答案1
**得分**: 0
根据错误提示,'void类型在此不允许',因此您应该在您的“select”方法中添加返回值。
```java
public String select(int id){
    String sql = "SELECT num_of_working_days FROM working_days_and_hours WHERE id = ?";
    
     try {
        connection = SQLite_Connection.connect();
        preparedStatement = connection.prepareStatement(sql);
        
        preparedStatement.setInt(1, id);
        
        preparedStatement.execute();
        preparedStatement.close();
        return "DB状态 1:" + preparedStatement.toString();
    } catch (Exception ex) {
       return ex.toString();
    }
}
英文:
As the error says, 'void type not allowed here' so you should add return in your "select" method.
public String select(int id){
    String sql = "SELECT num_of_working_days FROM working_days_and_hours WHERE id = ?";
    
     try {
        connection = SQLite_Connection.connect();
        preparedStatement = connection.prepareStatement(sql);
        
        preparedStatement.setInt(1, id);
        
        preparedStatement.execute();
        preparedStatement.close();
        return "DB status 1: "+ preparedStatement.toString();
    } catch (Exception ex) {
       return ex.toString();
    }
}
答案2
得分: 0
你的选择方法定义如下:
public void select(int id)
这将返回 void。
查看 Java 文档中的 JLabel: setText(String str) 方法,该方法需要一个字符串数据类型。
因此,请将你的方法 select 修改为返回一个字符串,即:
public String select(int id)
另外,在你的方法中,像下面这样存储预处理语句的结果:
ResultSet rs = preparedStatement.executeQuery();  // 从查询中获取结果表
while (rs.next()) {  // 将光标定位到结果上
  String result = rs.getInt(1);  // 如果你的列是整数类型
}
preparedStatement.close();
return result;
英文:
your select method definition
public void select(int id)
This returns void
Looking at the Java doc JLabel: setText(String str)
This method requires a string DataType
Hence change ur method select to return a String i.e.
public String select(int id)
also in ur method Store the result from prepared statement like below
    ResultSet rs = preparedStatement.executeQuery();        // Get the result table from the q
    while (rs.next()) {               // Position the cursor to the result 
      String result = rs.getInt(1); //If ur Column is of int type
    }
preparedStatement.close();
return result;
答案3
得分: 0
这是我提出的解决方案:
public ResultSet retrieveData(){
    String sql = "SELECT num_of_working_days FROM working_days_and_hours";
    try {
        connection = SQLite_Connection.connect();
        preparedStatement = connection.prepareStatement(sql);
        resultSet = preparedStatement.executeQuery();
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }finally {		
          //Services.colsedConnections();
    }
    return resultSet;
}
英文:
This was the solution I came up with:
public ResultSet retrieveData(){
        String sql = "SELECT num_of_working_days FROM working_days_and_hours";
        try {
                connection = SQLite_Connection.connect();
                preparedStatement = connection.prepareStatement(sql);
                resultSet = preparedStatement.executeQuery();
            } catch (Exception ex) {
                System.out.println(ex.toString());
            }finally {		
                      //Services.colsedConnections();
            }
        return resultSet;
    }
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论