首页 > 数据库 >向数据库插入计划数据

向数据库插入计划数据

时间:2024-03-31 21:55:51浏览次数:18  
标签:ps studentId return 数据库 resultSet 插入 connection planning 计划

public class PlanningDao {
    private static final String TAG = "mysql-db_timing-PlanningDao";

    public PlanningDao() {
        // 在构造函数中初始化必要的操作,如果有的话
    }

    // 方法:插入目标数据
    public static boolean insertGoal(Planning planning) {
        Connection connection = JDBCUtils.getConn();
        if (connection != null) {
            try {
                String sql = "INSERT INTO planning (studentId, weekNum, goal) VALUES (?, ?, ?)";
                PreparedStatement ps = connection.prepareStatement(sql);
                String studentId = getCurrentLoggedInUserId();
                ps.setString(1, studentId);
                ps.setInt(2, planning.getWeekNum());
                ps.setString(3, planning.getGoal());
                int rowsAffected = ps.executeUpdate();
                ps.close();
                connection.close();
                return rowsAffected > 0;
            } catch (SQLException e) {
                Log.e(TAG, "目标录入失败" + e.getMessage());
                e.printStackTrace();
            }
        }
        return false;
    }

    //录入目标分析
    public boolean insertAnalysis(Planning planning){
        Connection connection = JDBCUtils.getConn();
        if(connection != null){
            try{
                String sql = "UPDATE planning SET analysis = ?, complete = ? WHERE studentId = ? AND weekNum = ?";
                PreparedStatement ps = connection.prepareStatement(sql);
                ps.setString(1, planning.getAnalysis()); // 设置分析字段
                ps.setInt(2, planning.getComplete());   // 设置完成度字段
                ps.setString(3, getCurrentLoggedInUserId()); // 设置学生ID
                ps.setInt(4, planning.getWeekNum());  // 设置周数
                int rowsAffected = ps.executeUpdate();
                ps.close();
                connection.close();
                return rowsAffected > 0;
            }catch(SQLException e){
                Log.e(TAG, "目标分析录入失败" + e.getMessage());
                e.printStackTrace();
            }
        }
        return false;
    }


    // 方法:根据学生ID和周数查找计划
    public static Planning findPlanning(String studentId, int weekNum) {
        Connection connection = JDBCUtils.getConn();
        if (connection != null) {
            try {
                String sql = "SELECT * FROM planning WHERE studentId = ? AND weekNum = ?";
                PreparedStatement ps = connection.prepareStatement(sql);
                ps.setString(1, studentId);
                ps.setInt(2, weekNum);
                ResultSet resultSet = ps.executeQuery();
                if (resultSet.next()) {
                    Planning planning = new Planning();
                    planning.setStudentId(resultSet.getString("studentId"));
                    planning.setWeekNum(resultSet.getInt("weekNum"));
                    planning.setGoal(resultSet.getString("goal"));
                    planning.setAnalysis(resultSet.getString("analysis"));
                    planning.setComplete(resultSet.getInt("complete"));
                    resultSet.close();
                    ps.close();
                    connection.close();
                    return planning;
                }
            } catch (SQLException e) {
                Log.e(TAG, "Error finding planning: " + e.getMessage());
                e.printStackTrace();
            }
        }
        return null;
    }


    public static double calculateCompletionPercentage(String studentId) {
        Connection connection = JDBCUtils.getConn();
        if (connection != null) {
            try {
                // 查询指定 studentId 的所有记录的 complete 字段总和
                String sql = "SELECT SUM(complete) AS totalComplete FROM planning WHERE studentId = ?";
                PreparedStatement ps = connection.prepareStatement(sql);
                ps.setString(1, studentId);
                ResultSet resultSet = ps.executeQuery();

                if (resultSet.next()) {
                    int totalComplete = resultSet.getInt("totalComplete");
                    // 查询 student 表中指定 studentId 对应的 setGoal 值
                    StudentDao studentDao = new StudentDao();
                    int setGoal = studentDao.getSetGoal(studentId);

                    // 如果 setGoal 为 0,避免除以0错误,返回0
                    if (setGoal == 0) {
                        return 0;
                    }

                    // 计算完成度百分比
                    return ((double) totalComplete / setGoal);
                }
            } catch (SQLException e) {
                Log.e(TAG, "Error calculating completion percentage: " + e.getMessage());
                e.printStackTrace();
            } finally {
                try {
                    connection.close();
                } catch (SQLException e) {
                    Log.e(TAG, "Error closing connection: " + e.getMessage());
                    e.printStackTrace();
                }
            }
        }
        return -1; // 返回 -1 表示出错
    }

}

 

标签:ps,studentId,return,数据库,resultSet,插入,connection,planning,计划
From: https://www.cnblogs.com/aixin52129211/p/18107334

相关文章

  • 数据库之迁移常规操作(Mongodb篇)
    一、部署mongodb数据库。注:采用docker容器进行安装部署详情参考此文》》https://blog.csdn.net/u014642921/article/details/136022683二、在admin用户创建testdb文档插入两条数据admin>db.testdb.insertMany([{name:"1",age:1,addr:"earth"},{name:"2",age:2,addr:"......
  • Excel数据库模板导出
    有时候我们不仅需要将excel文件中的数据导入到数据库,同时我们还需要将数据库中的数据或者表字段导出,接下来我们就具体看看如何进行数据库模板导出~我记得需要导入easypoi的相关注解(如果没记错的话):<dependency><groupId>cn.afterturn</groupId><a......
  • 03-数据库的用户管理
    一、创建新用户mysql>createuserxjzw@'10.0.0.%'identifiedby'1';QueryOK,0rowsaffected(0.01sec)二、查看当前数据库正在登录的用户mysql>selectuser();+----------------+|user()    |+----------------+|root@localhost|+-----------......
  • SpringBoot整合Canal进行数据库 缓存同步
    Canal是阿里巴巴开源的一款基于MySQL数据库的增量日志订阅和解析工具,主要用于实现数据的实时同步和流处理。通过使用Canal,应用程序可以实现对数据库变更的监听,并将变更的数据实时同步到其他系统,比如消息队列、缓存系统等。 先记一下缓存雪崩的问题,缓存雪崩是指在我们的......
  • 【每周例题】力扣 C++ 搜索插入位置
    搜索插入位置题目搜索插入位置 题目分析1.第一个想法肯定是暴力遍历,找到了就输出下标,找不到就对比前后两个数字,寻找合适的位置插入。2.需要注意一点,我们需要再一开始就对比target与数组最后一个数的大小,如果比数组最后一个数大,直接返回数组长度3.第二个想法就是缩短寻找的......
  • 权限提升-Linux系统权限提升篇&Vulnhub&Capability能力&LD_Preload加载&数据库等
    知识点1、Web或用户到Linux-数据库类型2、Web或用户到Linux-Capability能力3、普通用户到Linux-LD_Preload加载so配合sudo章节点:1、Web权限提升及转移2、系统权限提升及转移3、宿主权限提升及转移4、域控权限提升及转移基础点0、为什么我们要学习权限提升转移技......
  • 会员制医疗预约服务管理信息系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读100套最新项目持续更新中.....2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssm+vue等技术项目合集)1.系统功能模块2.管理员功能模块......
  • 财务管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读100套最新项目持续更新中.....2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssm+vue等技术项目合集)目录1.管理员功能效果图1.1.员工功能模块2.系统功能设计3.数据库E......
  • MySQL数据库报错:The server quit without updating PID file (/var/lib/mysql/your-h
    在MySQL安装或初次配置过程中,遭遇报错是很常见的一件事,它可能会使你的安装进程暂时停滞。本文将深入探讨一个具体的安装错误,涵盖错误信息、可能的原因,以及详细的解决方案,旨在帮助你高效地解决这一挑战。错误描述安装MySQL过程中,你可能会碰到以下错误信息:Theserverquit......
  • MySQL数据库报错:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘
    在安装或配置MySQL数据库时,遇到错误是一个常见现象。这篇文章将详细讨论另一个常见的安装错误,包括错误的表现、产生的原因以及如何有效地解决该问题。了解这些信息可以帮助你快速定位问题所在,并采取适当的措施解决问题。错误描述一个常见的MySQL安装错误是:ERROR1045(28......