我想在C#应用程序中,假设为Form1中,连接数据库student,student中有两张表s和sc,我想对这两张表的更新情况进行统计.
当数据库更新时,在FORM1中能弹出对话框,通知数据库发生更新,用户点查看按钮,可以查看更新的具体情况.
谁能给出代码呀!根据我给的简单环境写的!
当数据库更新时,在FORM1中能弹出对话框,通知数据库发生更新,用户点查看按钮,可以查看更新的具体情况.
谁能给出代码呀!根据我给的简单环境写的!
解决方案 »
- Fri Mar 04 00:00:00 +0800 2011这种时间用C#怎么转成普通的datetime.
- WPF应用程序无法加载视图设计器
- Pocket PC 如何与PC实现通讯
- ,把文件放本机上时运行很好,把文件放在服务器上时却提示另外一个进程在访问该文件
- 关于paint的应用
- c#中如何让一个窗体一直处于活动状态
- 如何基于多对多关系的数据库设计
- html控件问题
- 服务端内存中有一图像MyImage,如何将它传给客户端,客户端如何再将它转化为图像格式
- 如果将此XML文件在TreeView中显示出来?求大神
- 【初学者求教】Timer控件(winform)
- 这个小功能如何实现?[label上的文字从右往左滚动显示]
或log4net等记录日志
http://blog.csdn.net/downmoon/archive/2009/09/29/4604443.aspx
log4net更灵活一些:
http://blog.csdn.net/downmoon/archive/2009/01/14/3766306.aspx
http://blog.csdn.net/downmoon/archive/2009/09/29/4604443.aspx
数据表变更主表
if exists (select * from sys.objects where object_id=object_id('tablechange') and type='U')
drop table tablechange
create table tablechange(changeno int identity(1,1) primary key,tablename varchar(50),changetype varchar(50),changedate datetime)数据变更子表
if exists (select * from sys.objects where object_id=object_id('tablechangedetial') and type='U')
drop table tablechangedetial
create table tablechangedetial(changedetialno int identity(1,1) primary key,tablechangeno int,fieldname varchar(50),changedata varchar(50))测试表
if exists (select * from sys.objects where object_id=object_id('student') and type='U')
drop table studentcreate table student(sno int identity(1,1) primary key,stuname varchar(6),age int)测试触发器,这里我只写一个插入的
if exists(select * from sys.objects where object_id=object_id('tr_in_onstu') and type='tr')
drop trigger tr_in_onstu
create trigger tr_in_onstu on student after insert
as
if exists(select * from inserted)
begin
insert into tablechange(tablename,changetype,changedate)values('student','insert',getdate())
declare @changeno int
set @changeno=@@identity
declare @stuname varchar(6)
select @stuname=isnull(stuname,null) from inserted
declare @age int
select @age=isnull(age,null) from inserted
if @stuname is not null and @age is not null
begin
insert into tablechangedetial(tablechangeno,fieldname,changedata)values(@changeno,'stuname',@stuname)
insert into tablechangedetial(tablechangeno,fieldname,changedata)values(@changeno,'age',@age)
end
else if @stuname is not null and @age is null
begin
insert into tablechangedetial(tablechangeno,fieldname,changedata)values(@changeno,'stuname',@stuname)
end
else
begin
insert into tablechangedetial(tablechangeno,fieldname,changedata)values(@changeno,'age',@age)
end
end测试数据
delete from tablechange
delete from tablechangedetial
delete from student
insert into student(stuname,age)values('name1',19)
insert into student(stuname)values('name2')
insert into student(age)values(20)查看结果结果
select tablename as 表名,case changetype when 'insert' then '插入' when 'update' then '更新' else '其他' end as 操作类型,changedate as 操作日期,fieldname as 字段名称,changedata as 变更的数据 from tablechange a join tablechangedetial b on a.changeno=b.tablechangeno 表名 操作类型 操作日期 字段名称 变更的数据
student 插入 2010-05-04 00:39:38.107 stuname name1
student 插入 2010-05-04 00:39:38.107 age 19
student 插入 2010-05-04 00:39:46.140 stuname name2
student 插入 2010-05-04 00:39:50.670 age 20
以上是一个插入的情况统计 至于更新的删除 自己模仿着弄 道理差不多
对于更新 要结合inserted表跟deleted表统计 更新前的数据存在delete表 更新后的数据在inserted