C# 关于Mysql更新!

C# 关于Mysql更新!,c#,mysql,C#,Mysql,我正在用winform、mysql、c#做一个大学项目 为此,我用这个结构创建了mysql表 CREATE TABLE `attendance_monthly_rpt` ( `id` int(15) NOT NULL AUTO_INCREMENT, `student_no` varchar(50) NOT NULL, `student_name` varchar(50) NOT NULL, `day1` varchar(15) NOT NULL, `day2` varchar

我正在用winform、mysql、c#做一个大学项目

为此,我用这个结构创建了mysql表

CREATE TABLE `attendance_monthly_rpt` (
  `id` int(15) NOT NULL AUTO_INCREMENT,
  `student_no` varchar(50) NOT NULL,
  `student_name` varchar(50) NOT NULL,
  `day1` varchar(15) NOT NULL,
  `day2` varchar(15) NOT NULL,
  `day3` varchar(15) NOT NULL,
  `day4` varchar(15) NOT NULL,
  `day5` varchar(15) NOT NULL,
  `day6` varchar(15) NOT NULL,
  `day7` varchar(15) NOT NULL,
  `day8` varchar(15) NOT NULL,
  `day9` varchar(15) NOT NULL,
  `day10` varchar(15) NOT NULL,
  `day11` varchar(15) NOT NULL,
  `day12` varchar(15) NOT NULL,
  `day13` varchar(15) NOT NULL,
  `day14` varchar(15) NOT NULL,
  `day15` varchar(15) NOT NULL,
  `day16` varchar(15) NOT NULL,
  `day17` varchar(15) NOT NULL,
  `day18` varchar(15) NOT NULL,
  `day19` varchar(15) NOT NULL,
  `day20` varchar(15) NOT NULL,
  `day21` varchar(15) NOT NULL,
  `day22` varchar(15) NOT NULL,
  `day23` varchar(15) NOT NULL,
  `day24` varchar(15) NOT NULL,
  `day25` varchar(15) NOT NULL,
  `day26` varchar(15) NOT NULL,
  `day27` varchar(15) NOT NULL,
  `day28` varchar(15) NOT NULL,
  `day29` varchar(15) NOT NULL,
  `day30` varchar(15) NOT NULL,
  `day31` varchar(15) NOT NULL,
  `tot_persent` int(15) NOT NULL,
  `tot_absent` int(15) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
我用p、Ab、OD更新该表第1天到第31天的列。现在我想把tot_不存在逻辑中的tot_percent更新为Ab和P与OD之和

例如

IHM22557001,耶迦底斯瓦兰,Ab,p,Ab,OD,0,0,OD,Ab,0,0,0,Ab

总数是3 tot_缺席的时间是4


提前谢谢。

我将建议一种不同的模式;以日为基础。如果您有基于日的,即

Id, StudentNumber, Date, Status
请注意,更新tot___percent etc在预先计算的形式中不存在,因为它们在数据中非常有用

然后可以通过非常干净的方法获得数据:

SELECT   Date, Status
FROM     StudentAttendance
WHERE    StudentNumber = @no
AND      Date >= @start AND Date <= @end
ORDER BY Date

这可能是由数据库中的
tinyint
或类似内容引起的。大多数ORM/micro-ORM都会自动为您映射,因此您不必在那里做任何聪明的事情。

我将建议一种不同的模式;以日为基础。如果您有基于日的,即

Id, StudentNumber, Date, Status
请注意,更新tot___percent etc在预先计算的形式中不存在,因为它们在数据中非常有用

然后可以通过非常干净的方法获得数据:

SELECT   Date, Status
FROM     StudentAttendance
WHERE    StudentNumber = @no
AND      Date >= @start AND Date <= @end
ORDER BY Date
这可能是由数据库中的
tinyint
或类似内容引起的。大多数ORM/micro-ORM会自动为您映射,这样您就不必在那里做任何聪明的事情