三月二十四日 安卓app打卡開發日誌

财神给你送元宝發表於2024-03-24

目前打卡系統基本完成

沒有實現的功能有無法統計次數 和 連線本地資料庫

我全程連線的遠端資料庫

package com.example.test_four.utils;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * function: 資料庫工具類,連線資料庫用
 */
public class JDBCUtils {
    private static final String TAG = "mysql-party-JDBCUtils";

    private static String driver = "com.mysql.jdbc.Driver";// MySql驅動

    private static String dbName = "party";// 資料庫名稱

    private static String user = "root";// 使用者名稱

    private static String password = "123456";// 密碼

    public static Connection getConn(){

        Connection connection = null;
        try{
            Class.forName(driver);// 動態載入類
            String ip = "192.168.180.241";// 寫成本機地址,不能寫成localhost,同時手機和電腦連線的網路必須是同一個

            // 嘗試建立到給定資料庫URL的連線
            connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName,
                    user, password);

        }catch (Exception e){
            e.printStackTrace();
        }
        return connection;
    }
}

還有周一設定目標 週五進行分析 的限制程式碼

 public void 分析(View view) {
        Calendar calendar = Calendar.getInstance();
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

        // 判斷當前系統日期是否為週五(Calendar.FRIDAY 對應值為6)
        if (dayOfWeek == Calendar.SUNDAY) {
            String account = getIntent().getStringExtra("account");
            Intent intent = new Intent(this, analysis.class);
            intent.putExtra("account", account);
            startActivity(intent);
        } else {
            // 如果不是週五,給出提示或者執行其他操作
            Toast.makeText(this, "今天不是週五,無法進行下列操作", Toast.LENGTH_SHORT).show();
        }
    }

    public void 目標(View view) {
        Calendar calendar = Calendar.getInstance();
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

        // 判斷當前系統日期是否為週一(Calendar.SUNDAY 對應值為1,Calendar.MONDAY 對應值為2)
        if (dayOfWeek == Calendar.SUNDAY) {
            String account = getIntent().getStringExtra("account");
            Intent intent = new Intent(this, target.class);
            intent.putExtra("account", account);
            startActivity(intent);
        } else {
            // 如果不是週一,給出提示或者執行其他操作
            Toast.makeText(this, "今天不是週一,無法進行下列操作", Toast.LENGTH_SHORT).show();
        }
    }

週五的前四天 是週一 只有符合當前系統時間的 前四天 以及賬號匹配 才可以進行資料庫修改 對目標進行分析

 public static boolean ana(User user, String account) {
        Connection connection = JDBCUtils.getConn();
        Date currentDate = new Date(); // 獲取當前系統時間

        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(currentDate);
            calendar.add(Calendar.DATE, -4); // 往前推四天
            Date fourDaysAgo = calendar.getTime();

            String fourDaysAgoString = sdf.format(fourDaysAgo);

            String sql = "SELECT * FROM goal WHERE DATE(date1) = ? AND account = ?";
            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setString(1, fourDaysAgoString);
            ps.setString(2, account);
            ResultSet rs = ps.executeQuery();

            if (rs.next()) { // 存在符合條件的資料
                String insertSql = "INSERT INTO goal(analysis) VALUES (?)";
                PreparedStatement insertPs = connection.prepareStatement(insertSql);
                insertPs.setString(1, user.getAnalysis());

                int result = insertPs.executeUpdate();

                if (result > 0) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.e(TAG, "異常ana:" + e.getMessage());
            return false;
        }
    }