java:在JavaSwing中实现服务方法

dy2hfwbg  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(369)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

4个月前关门了。
改进这个问题
我正在使用javaswing构建一个桌面应用程序,我已经连接了sqlite数据库并实现了服务类,但是我不知道如何调用这些方法并在应用程序中实现它们。
这是我创建的服务类之一,我已确认它们已成功连接到数据库

public class NumOfDaysService {

    private static Connection connection;
    private static PreparedStatement preparedStatement;
    private static Statement stmt;
    ResultSet resultSet;

    public void addNumberOfDays(WorkingDaysAndHoursModel work) {
        int numberOfDays = work.getNum_of_working_days();

        String sql = "INSERT INTO working_days_and_hours(num_of_working_days) VALUES('"+numberOfDays+"')";

      try {
            connection = SQLite_Connection.connect();
            preparedStatement = connection.prepareStatement(sql);
            boolean result = preparedStatement.execute();
            System.out.println("DB status: "+ result);
        } catch (Exception ex) {
            System.out.println(ex.toString());
            //Logger.getLogger(Services.class.getName()).log(Level.SEVERE, null, ex);
        }finally {      
                 // Services.colsedConnections();
        }  
    }

     public void select(){
        String sql = "SELECT num_of_working_days FROM working_days_and_hours";

         try {
            connection = SQLite_Connection.connect();
            stmt = connection.createStatement();
             resultSet = stmt.executeQuery(sql);
            System.out.println("DB status: "+ resultSet);
        } catch (Exception ex) {
            System.out.println(ex.toString());
            //Logger.getLogger(Services.class.getName()).log(Level.SEVERE, null, ex);
        }finally {      
                 // Services.colsedConnections();
        }  
    }

     public void update(int id, int num) {
        String sql = "UPDATE working_days_and_hours SET num_of_working_days = '"+num+"' WHERE id = '"+id+"'";

        try {
            connection = SQLite_Connection.connect();
            preparedStatement = connection.prepareStatement(sql);

            preparedStatement.setInt(1, id);
            preparedStatement.setInt(2, num);

            preparedStatement.executeUpdate();

            System.out.println("DB status: "+ preparedStatement);

        } catch (Exception ex) {
            System.out.println(ex.toString());
            //Logger.getLogger(Services.class.getName()).log(Level.SEVERE, null, ex);
        }finally {      
                 // Services.colsedConnections();
        }  
    }

     public void delete(int id) {
        String sql = "DELETE FROM working_days_and_hours WHERE id = ?";

        try {

            connection = SQLite_Connection.connect();
            preparedStatement = connection.prepareStatement(sql);

            // set the corresponding param
            preparedStatement.setInt(1, id);
            // execute the delete statement
            preparedStatement.executeUpdate();

        } catch (Exception ex) {
            System.out.println(ex.toString());
            //Logger.getLogger(Services.class.getName()).log(Level.SEVERE, null, ex);
        }finally {      
                 // Services.colsedConnections();
        }  
    }

//      public static void main(String[] args) {
//        NumOfDaysService lecturerService = new NumOfDaysService();
//        WorkingDaysAndHoursModel lecturer = new WorkingDaysAndHoursModel(3);
//        Lecturer lecturer2 = new Lecturer(0, "abcd", "123456", "eng", "OC", "Malabe", "new", "level", "rank");

//        lecturerService.addNumberOfDays(lecturer);
//        lecturerService.select();
//        lecturerService.delete(2);
//lecturerService.update(3, 2);

//    }

}

我的问题是,我想使用这些方法,但我不知道如何使用。
如何将insert方法调用为button方法,如何将select方法调用为文本字段?

ndh0cuux

ndh0cuux1#

您可以通过创建类的示例来使用它,然后调用方法,例如:

NumOfDaysService service = new NumOfDaysService();
service.addNumberOfDays(work);

但是,该代码有很多问题,例如:
不要捕捉异常并忽略它们。在一个swing应用程序中,打印可能毫无进展,因此在代码中它们确实被忽略了。
因为每个方法都连接到数据库,所以不要 Connection 在静电场中。使用局部变量。
不要把 PreparedStatement , Statement ,和 ResultSet 在田野里。使用局部变量。
使用try with resources关闭所有jdbc资源。
不要使用字符串连接在sql语句中插入值。学习如何使用 PreparedStatement .
这个 select() 方法需要使用 ResultSet 在返回之前获取数据。
...

相关问题