自己定义了一些自动邮件发送的信息。但是因为某一些原因。其应用部署在一台台式机上面,因为网络原因(大多数为网络)或是电源原因导致定时邮件没有发送成功。
那么必须自己从其他方面进行解决。
因为定时任务是按照时间来进行的,如果超过了这个时间点,下次发送只能等明天这个时间了。所以这样并不是特别合理的方式。
所以改进的方案为:
数据库存储任务字段日期和标志位,如果某天已完成则标志位为确认。
程序启动后,检测当前时间并核对数据库中此时间点及此时间点以前的时间点标志位是否为真。
如果不为真,则相应做业务操作,操作完成设置标志位为真。
对于每天都执行的任务来说是很简单的。
但是对于某些周期性的,比如每周周一执行。那么就需要在数据库中奖每周周一进行提取出来。
这里方案有两种,1,采用传统的java方法,获取每周周一的日期然后存储到数据库。这个方案简单,而且可以执行。2,采用数据库的存储过程。存储过程其实也是一个方法。只是其采用sql的预演。
我这里考虑采用第二种方法。
在进行过程中发现了一些坑。对于mysql存储过程方面用的很少。居然要设定结束符。(大家尽量多参考官方的手册,网络上的很多都不行能执行)
存储过程如下:
DELIMITER //
create or replace procedure looppc()
begin
declare i int;
set i = 1;
repeat
insert into testrepeat(dd) select DATE_FORMAT(subdate(curdate(),date_format(curdate(),'%w')-i*7),'%Y-%m-%d');
set i = i + 1;
until i >= 20
end repeat;
end
//
DELIMITER ;
第一行是要注意的。
然后执行call looppc();即可。
分享到:
相关推荐
MySQL存储过程是数据库管理系统中的一种重要功能,它允许程序员或数据库管理员预编译一系列SQL语句,形成一个可重用的程序单元。在本场景中,我们关注的是如何利用存储过程进行数据库的备份与还原,这在数据管理中至...
以下是一个简单的Java调用MySQL存储过程的示例: ```java import java.sql.*; public class TestJavaProcedure { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; ...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
在Java编程领域,将网络文件下载到本地并将其数据存储到数据库是一项常见的任务。...实际的压缩包文件"Java获取网络文件并插入数据库.doc"可能会包含更具体的代码示例或步骤说明,这将有助于更好地理解和实现这个过程。
本教程结合"mysql经典教程+mysql存储过程讲解"的主题,将深入探讨MySQL的基础知识以及核心特性——存储过程。 首先,我们需要理解什么是数据库。数据库是一个组织和存储数据的系统,允许用户以结构化方式访问和管理...
本实例展示了如何在MySQL存储过程中实现异常处理,以捕获并处理可能出现的错误。 首先,我们注意到在创建存储过程`myProc`时,使用了`delimiter $$`来改变MySQL客户端的语句分隔符,这是为了在存储过程中使用多个...
MySQL 存储过程编程是指在 MySQL 数据库中使用存储过程来实现业务逻辑的编程技术。存储过程是一种可以在数据库中存储和执行的程序单元,它可以实现复杂的业务逻辑和数据处理操作。 在 MySQL 5.0 中,存储过程的...
同时,`mysql存储过程教程.pdf`很可能是一个详细的指南,涵盖了存储过程的基础概念、语法、高级特性以及实例。通过阅读这份教程,读者可以学习如何创建、修改、删除存储过程,理解如何在存储过程中使用变量、游标、...
最后,"mysql存储过程.pdf"专注于MySQL的存储过程。存储过程是预编译的SQL语句集合,可以提高数据库操作的性能,减少网络流量,并增强数据安全。在PDF文档中,你将学习如何定义、调用和管理存储过程,以及如何使用...
存储过程是数据库中一组预编译的SQL语句,它可以接收参数,执行特定任务,并返回结果。其优点包括: 1. 提高性能:存储过程在首次编译后,会缓存执行计划,多次调用时无需再次解析,从而提高执行速度。 2. 减少网络...
flutter + SpringBoot + MySql 实现高德地图定位获取位置信息插入数据库并计算出经纬度之间的距离
在数据库管理中,函数、触发器和存储过程是三个重要的概念,它们极大地增强了数据处理的灵活性和效率。 **一、MySQL数据库函数** 函数是预定义的代码块,接受一个或多个参数,并返回一个值。MySQL提供了丰富的内置...
根据提供的文件内容,本篇实验报告主要围绕MySQL数据库中存储过程和函数的应用,涵盖了创建存储过程、函数、游标以及异常处理等高级特性。下面将详细解析报告中的每个知识点。 1. 创建存储过程 存储过程是一种在...
本项目“C#+Mysql将图片批量转为2进制并存入数据库中”就是这样一个解决方案,它利用C#编程语言和MySQL数据库系统,实现了将图片批量转化为二进制数据并存储到数据库的功能。 首先,我们要理解C#在这过程中的作用。...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复使用的代码块,以提高数据处理的效率和应用程序的性能。在这个"MySQL存储过程学习"的主题中,我们将深入探讨...
在VB6中,连接MySQL数据库并调用存储过程是数据库操作的重要部分,这涉及到ADO(ActiveX Data Objects)技术的运用。ADO是Microsoft提供的一种数据访问接口,它允许程序员使用VB6等编程语言来访问各种数据源,包括...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复执行的单元,极大地提高了数据库操作的效率和便捷性。在MySQL中,存储过程可以包含复杂的业务逻辑,比如条件...
在使用Qt进行应用程序开发时,有时我们需要处理图像数据并将其存储到数据库中,例如MySQL。这个过程涉及到几个关键步骤:图像的读取、编码、存储、检索和显示。以下是对这些知识点的详细解释: 1. **Qt图像处理**:...
Java 连接 MySql 数据库,并实现插入、删除、更新、选择操作 Java 连接 MySql 数据库是 Java 程序员中非常常见的一种操作。通过使用 JDBC(Java Database Connectivity,Java 数据库连接)驱动程序,可以轻松地连接...