今天上午 将打卡逻辑代码优化了一下

之后每天就只可以打卡一次了

 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开发日志的更多相关文章

  1. 安卓 打飞机 app 开发 第一篇

    先上效果图 其实,当时刚买 htc G8 的时候(那时北京的房价还是6千一平),安卓2.1 ,2.3 的时候就已经有安卓方面的开发的兴趣,但后来就没有弄过... today 突然想起来,手机上连个游戏 ...

  2. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [7] APP 错误日志接口

    APP 上线以后可能遇到的问题: ① APP 强退 ② 数据加载失败 ③ APP 潜在问题 错误日志需要记录的内容 数据表 error_log 字段: id app_id:app 类别 id did: ...

  3. 使用ionic与cordova(phonegap)进行轻量级app开发前的环境配置与打包安卓apk过程记录

     前言 有人说:"如果你恨一个人,就让ta去接触cordova(phonegap)",这是因为这里面的水很深,坑很多,真让人不是一般地发狂.或许有幸运的人儿基本顺顺利利就配置完环境 ...

  4. 安卓app开发-05-Android xml布局详细介绍

    安卓app开发-05-Android xml布局详细介绍 虽然说有 墨刀,墨客 这些图形化开发工具来做 Android 的界面设计,但是我们还是离不开要去学习做安卓原生app,学习 xml 布局还是必 ...

  5. 安卓app开发-03-项目的基本开发步骤

    android项目的基本开发步骤 这里分享一下开发 安卓 app 的流程,当然有些感觉不必要,其实不然,前期工作也是极为重要的额,就像开发的时候如果目标不对的话,到后期后很迷的,所以一定要提前做好规划 ...

  6. 安卓app开发-02-安卓app快速开发

    安卓app开发-02-安卓app快速开发 上一篇介绍了安卓 app 开发的工具和环境配置,本篇不涉及编程技术,适合小团队快速高效开发 APP制作流程 当有一个APP创意,该如何实现呢?是花数十万找AP ...

  7. 安卓app开发-01-开发工具及环境配置

    安卓app开发-01-开发工具及环境配置 请大家根据推荐指数和自己的意愿选择 使用 Android Studio 1.可以使用 Android Studio 下载地址:http://www.andro ...

  8. ios开发和安卓app开发有哪些区别

    ios平台和Android平台开发APP应用程序主要区别:一.编码语言Android平台开发中是使用Java,ios平台则是使用的Objective-C和Swift.需要注意的是,如果你是要用ios进 ...

  9. 安卓APP开发的初步了解

    今天成功安装了Android Studio 并且对APP的开发框架结构进行了初步了解 如上图:app基本结构情况 下面来仔细解释一下各个方面目录的作用 首先 manifests目录:包含Android ...

  10. 人人都学会APP开发 提高就业竞争力 简单实用APP应用 安卓浏览器APP 企业内部通用APP制作 制造业通用APP

    安卓从2009年开始流程于手机.平板,已经是不争的非常强大生产力工具,更为社会创造非常高的价值, 现在已经是202X年,已经十几年的发展,安卓平台已经无所不在. 因此建议人人都学学APP制作,简易入门 ...

随机推荐

  1. CNCF 沙箱项目 OCM Placement 多集群调度指南

    ​简介:在这篇文章中,将介绍 Placement 如何选择到所需的集群,Placement 可以提供的调度功能,以及一些场景下的最佳实践,使用者可以参考示例来编写符合自己要求的 Placement.其 ...

  2. 项目实战总结以及接入U-APM

    ​简介: 导致 App 性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线.系统函数.编程范式.数据结构等导致的.即便是较有经验的程序员,也很难在开发时就能避免所有导致 ...

  3. [FE] G2Plot 在 Vue 中使用 CDN 方式避免构建时增大 js 体积

    使用 npm.yarn 方式安装的包,虽方便使用,但是会极大增加 vendor.xx.js 体积,拖慢网站运行速度. 以 G2Plot 为例,实际在 build 构建时,会下载一些额外字体到 vend ...

  4. WPF 自己封装 Skia 差量绘制控件

    使用 Skia 能做到在多个不同的平台使用相同的一套 API 绘制出相同界面效果的图片,可以将图片绘制到应用程序的渲染显示里面.在 WPF 中最稳的方法就是通过 WriteableBitmap 作为承 ...

  5. JavaScript数组Array方法介绍,使用示例及ES6拓展

    数组定义 有次序和编号的一组值 类似数组对象 函数agruments对象,字符串,DOM元素集 实例属性 Array.prototype.length length可以赋值,用以改变数组长度 arr. ...

  6. 记录一个HttpClient超时连接配置不生效的问题排查过程

    现象 首先有一个被服务由于内存有限,导致巨卡.导致调用他的服务出现线程阻塞.jstack打印线程池如下所示: 开始排查解决问题 第一步:检查代码看是否超时设置是否正确,因为感觉超时设置正确不可能阻塞. ...

  7. 表和数据连接,而不是和表连接(JOIN)

    1.连接数据,但是顺序会受影响 在使用JOIN连接临时表或子查询时,无法保证结果的顺序与特定值的顺序完全一致.这是因为在查询过程中,数据库优化器可能会选择不同的执行计划,导致结果的顺序发生变化. SE ...

  8. VUE中具名插槽和匿名插槽的使用

    在我的项目中由于使用的是vue+element一个自用框架进行开发,插槽用法相较简单 比如在列表字段columns使用slotname即可 <template v-slot:_spec=&quo ...

  9. CMake快速入门教程

    前言 Make工具因遵循不同的规范和标准,执行的Makefile的格式也是不同.主流的Make工具包括: GNU Make QT的qmake 微软的 MS nmake BSD的 pmake 每个平台都 ...

  10. uniapp微信小程序uni.request捕获500异常

    通常使用ajax,axios等进行服务请求,500错误或者其他的错误都会直接进入到错误通道里头,比如ajax异常的话会进入到error的回调函数里头,axios异常会进行到catch里头,一开始以为u ...