Java查询当月数据

1. 流程图

flowchart TD
    start(开始) --> input(输入当月查询条件)
    input --> check(检查条件是否合法)
    check -->|合法| query(查询当月数据)
    check -->|不合法| end(结束)
    query --> output(输出查询结果)
    output --> end
    end --> finish(完成)

2. 整体流程

整个流程可以分为以下几个步骤:

  1. 输入当月查询条件
  2. 检查条件是否合法
  3. 查询当月数据
  4. 输出查询结果
  5. 完成

3. 详细步骤

3.1 输入当月查询条件

首先,我们需要定义一个变量来存储用户输入的查询条件,这里假设用户输入的是一个日期类型的变量 currentMonth,表示当月的日期。

import java.util.Date;

Date currentMonth = new Date();

3.2 检查条件是否合法

接下来,我们需要判断用户输入的日期是否合法,比如不允许输入未来的日期。

// 获取当前日期
Date currentDate = new Date();

// 判断用户输入的日期是否大于当前日期,如果大于则为非法输入
if (currentMonth.after(currentDate)) {
    System.out.println("输入的日期不合法!");
    return;
}

3.3 查询当月数据

在查询之前,我们需要连接数据库,并准备好相应的 SQL 查询语句。假设我们使用的是 MySQL 数据库,并且有一个表名为 data,包含一个日期字段 date

import java.sql.*;
import java.util.*;

// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";

// SQL 查询语句
String sql = "SELECT * FROM data WHERE MONTH(date) = MONTH(?) AND YEAR(date) = YEAR(?)";

// 创建连接
Connection conn = DriverManager.getConnection(url, username, password);

// 创建预处理语句
PreparedStatement stmt = conn.prepareStatement(sql);

// 设置查询参数
Calendar calendar = Calendar.getInstance();
calendar.setTime(currentMonth);
stmt.setDate(1, new java.sql.Date(calendar.getTimeInMillis()));
stmt.setDate(2, new java.sql.Date(calendar.getTimeInMillis()));

// 执行查询
ResultSet rs = stmt.executeQuery();

3.4 输出查询结果

查询结果返回的是一个结果集(ResultSet),我们可以使用循环遍历的方式来输出每一条数据。

// 遍历结果集
while (rs.next()) {
    // 获取每一行的数据
    Date date = rs.getDate("date");
    String value = rs.getString("value");
    
    // 输出数据
    System.out.println("日期:" + date + ",数值:" + value);
}

3.5 完成

最后,我们需要关闭数据库连接,释放资源。

// 关闭结果集
rs.close();

// 关闭预处理语句
stmt.close();

// 关闭连接
conn.close();

4. 完整代码

import java.sql.*;
import java.util.*;

public class QueryCurrentMonthData {
    public static void main(String[] args) throws SQLException {
        // 输入当月查询条件
        Date currentMonth = new Date();
        
        // 检查条件是否合法
        Date currentDate = new Date();
        if (currentMonth.after(currentDate)) {
            System.out.println("输入的日期不合法!");
            return;
        }
        
        // 查询当月数据
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";
        String sql = "SELECT * FROM data WHERE MONTH(date) = MONTH(?) AND YEAR(date) = YEAR(?)";
        
        Connection conn = DriverManager.getConnection(url, username, password);
        PreparedStatement stmt = conn.prepareStatement(sql);
        
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(currentMonth);
        stmt.setDate(1, new java.sql.Date(calendar.getTimeInMillis()));
        stmt.setDate(2, new java.sql.Date(calendar.getTimeInMillis()));
        
        ResultSet rs = stmt.executeQuery();
        
        // 输出查询结果
        while (rs.next()) {
            Date date = rs.getDate("date");
            String value = rs.getString("value");
            System.out.println("日期:" + date + ",数值:" + value);
        }
        
        // 完成
        rs.close();
        stmt.close();
        conn.close();
    }
}

以上就是查询当月数据的完整流程和代码示例。你可以根据实际情况修改相应的数据库连接信息和查询语句,以适应