三月二十六日 安卓打卡app开发日志
今天上午 将打卡逻辑代码优化了一下
之后每天就只可以打卡一次了
public static String daka(String time_s, String time_e, String text, String account) {
Connection connection = JDBCUtils.getConn();
try {
if (connection != null) {
String sql1 = "SELECT * FROM infor WHERE date = ? AND account = ?";
PreparedStatement ps1 = connection.prepareStatement(sql1);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String currentDate = dateFormat.format(new Date());
ps1.setString(1, currentDate);
ps1.setString(2, account);
ResultSet resultSet = ps1.executeQuery();
if (!resultSet.next()) {
String sql = "INSERT INTO infor (time_s, time_e, text, account, date) VALUES (?, ?, ?, ?, ?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, time_s);
ps.setString(2, time_e);
ps.setString(3, text);
ps.setString(4, account);
ps.setString(5, currentDate);
int rs = ps.executeUpdate();
return rs > 0 ? "1" : "-1"; // 如果执行结果大于0,说明打卡成功,返回"1";否则返回"-1"
} else {
return "-1"; // 今日已打卡,返回"-1"
}
} else {
return "0"; // 连接数据库失败,返回"0"
}
} catch (Exception e) {
e.printStackTrace();
return "0"; // 发生异常,返回"0"
} finally {
// 可以在这里关闭连接等资源
}
}
public void 打卡2(View view) {
// 获取开始时间
int startHour = startTimePicker.getHour();
int startMinute = startTimePicker.getMinute();
// 获取结束时间
int endHour = endTimePicker.getHour();
int endMinute = endTimePicker.getMinute();
// 将开始时间转换为字符串形式
String startTime = String.format("%02d:%02d", startHour, startMinute);
// 将结束时间转换为字符串形式
String endTime = String.format("%02d:%02d", endHour, endMinute);
// 获取学习内容
String studyContent = studyContentEditText.getText().toString();
Intent intent = getIntent();
String account = intent.getStringExtra("account");
new Thread(){
@Override
public void run() {
String result = UserDao.daka(startTime, endTime, studyContent, account);
switch (result) {
case "1":
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(Clock_in.this, "打卡成功", Toast.LENGTH_LONG).show();
}
});
break;
case "-1":
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(Clock_in.this, "今日已打卡", Toast.LENGTH_LONG).show();
}
});
break;
case "0":
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(Clock_in.this, "连接数据库失败", Toast.LENGTH_LONG).show();
}
});
break;
}
}
}.start();
}
三月二十六日 安卓打卡app开发日志的更多相关文章
- 安卓 打飞机 app 开发 第一篇
先上效果图 其实,当时刚买 htc G8 的时候(那时北京的房价还是6千一平),安卓2.1 ,2.3 的时候就已经有安卓方面的开发的兴趣,但后来就没有弄过... today 突然想起来,手机上连个游戏 ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [7] APP 错误日志接口
APP 上线以后可能遇到的问题: ① APP 强退 ② 数据加载失败 ③ APP 潜在问题 错误日志需要记录的内容 数据表 error_log 字段: id app_id:app 类别 id did: ...
- 使用ionic与cordova(phonegap)进行轻量级app开发前的环境配置与打包安卓apk过程记录
前言 有人说:"如果你恨一个人,就让ta去接触cordova(phonegap)",这是因为这里面的水很深,坑很多,真让人不是一般地发狂.或许有幸运的人儿基本顺顺利利就配置完环境 ...
- 安卓app开发-05-Android xml布局详细介绍
安卓app开发-05-Android xml布局详细介绍 虽然说有 墨刀,墨客 这些图形化开发工具来做 Android 的界面设计,但是我们还是离不开要去学习做安卓原生app,学习 xml 布局还是必 ...
- 安卓app开发-03-项目的基本开发步骤
android项目的基本开发步骤 这里分享一下开发 安卓 app 的流程,当然有些感觉不必要,其实不然,前期工作也是极为重要的额,就像开发的时候如果目标不对的话,到后期后很迷的,所以一定要提前做好规划 ...
- 安卓app开发-02-安卓app快速开发
安卓app开发-02-安卓app快速开发 上一篇介绍了安卓 app 开发的工具和环境配置,本篇不涉及编程技术,适合小团队快速高效开发 APP制作流程 当有一个APP创意,该如何实现呢?是花数十万找AP ...
- 安卓app开发-01-开发工具及环境配置
安卓app开发-01-开发工具及环境配置 请大家根据推荐指数和自己的意愿选择 使用 Android Studio 1.可以使用 Android Studio 下载地址:http://www.andro ...
- ios开发和安卓app开发有哪些区别
ios平台和Android平台开发APP应用程序主要区别:一.编码语言Android平台开发中是使用Java,ios平台则是使用的Objective-C和Swift.需要注意的是,如果你是要用ios进 ...
- 安卓APP开发的初步了解
今天成功安装了Android Studio 并且对APP的开发框架结构进行了初步了解 如上图:app基本结构情况 下面来仔细解释一下各个方面目录的作用 首先 manifests目录:包含Android ...
- 人人都学会APP开发 提高就业竞争力 简单实用APP应用 安卓浏览器APP 企业内部通用APP制作 制造业通用APP
安卓从2009年开始流程于手机.平板,已经是不争的非常强大生产力工具,更为社会创造非常高的价值, 现在已经是202X年,已经十几年的发展,安卓平台已经无所不在. 因此建议人人都学学APP制作,简易入门 ...
随机推荐
- Oracle数据到MaxCompute乱码问题详解
简介:集成Oracle数据到MaxCompute,乱码问题分析: 为什么,在oracle数据不乱码,集成到MaxCompute就乱码了? 问题在哪里? 1.1 乱码现象 DataWorks的数据离线 ...
- [Py] Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work
当通过常规命令安装 pip install pydot 和 brew install graphviz 之后,在代码中 import pydot 依旧不生效. 比如:在 tensorflow 使用 t ...
- [FE] Quasar 变通 loading 单纯使用遮罩效果的方法
Quasar 的 loading 组件是提供加载中的遮罩效果的. 如果你不想要 loading 的效果,只想保留遮罩效果,那么你可以通过 show() 方法的参数进行调整. 把 spinnerSize ...
- 探索 WPF 的 ITabletManager.GetTabletCount 在 Win11 系统的底层实现
本文将和大家介绍专为 WPF 触摸模块提供的 ITabletManager 的 GetTabletCount 方法在 Windows 11 系统的底层实现 本文属于 WPF 触摸相关系列博客,偏系统底 ...
- Asp-Net-Core开发笔记:进一步实现非侵入性审计日志功能
前言 上次说了利用 AOP 思想实现了审计日志功能,不过有同学反馈还是无法实现完全无侵入,于是我又重构了一版新的. 回顾一下:Asp-Net-Core开发笔记:实现动态审计日志功能 现在已经可以实现对 ...
- ITIL4 服务价值系统(SVS):一场服务管理的革新之旅
在这个数字化时代,每一家企业都在追求高效的服务管理和卓越的客户体验.今天,我们就来聊一聊ITIL4中的服务价值系统(Service Value System, SVS)--一个让服务管理变得更加直观和 ...
- Gem离线包安装
Gem离线包安装 项目环境 以 rest-client 为例 本地如果是rails项目环境: ruby '2.7.0' gem 'rails', '~> 6.0.3', '>= 6.0.3 ...
- ubuntu编译与安装 OpenSSL-1.0.0
apt-get purge openssl rm -rf /etc/ssl #删除配置文件 编译与安装 OpenSSL prefix 是安装目录,openssldir 是配置文件目录,另外建议安装两次 ...
- C数据结构:哈夫曼树算法实现与应用
学习哈夫曼树(编码) 带权二叉树 认识WPL 最优二叉树 构造哈夫曼树的过程 哈夫曼树的应用 建立哈夫曼树 代码如下: 结构体代码部分 建立操作代码 找到最小结点(※难点) 附上建立哈夫曼树源代码 带 ...
- IPv6 — 实践
目录 文章目录 目录 前文列表 常用命令 开启/关闭 IPv6 支持 在 CentOS7 上配置 IPv6 地址 自动获取链路本地地址 配置静态全球唯一地址 配置临时 IPv6 地址 添加 IPv6 ...