该怎样实现“当数据库中的条目+1时,触发一系列条件使得数据库内数值改变”?

pianoline2011 2012-05-07 04:02:37
我是这样想的:
int grade, point;
long size1;

string sql1 = "select point,size,grade from users where login='1'";
classDB nb = new classDB();
DataSet sd = nb.TDataSet(sql1);
DataTable dt = sd.Tables[0];

string sql3 = "select count(files.ID) from files,users where files.ID=users.ID and users.login='1'";
classDB cc = new classDB();
DataSet cds = cc.TDataSet(sql3);
DataTable cdtb = cds.Tables[0];

CRules ri = new CRules();
ri.grade = Convert.ToInt32(dt.Rows[0]["grade"]);
ri.point = Convert.ToInt32(dt.Rows[0]["point"]);
ri.i = cdtb.Rows.Count;
grade = ri.levelup();
point = ri.pointc();
size1 = ri.rules();

然后用一个update值送回数据库。
但是现在出现了一个问题,就是送回的值还是原封不动的原值,等于说类CRules中的方法完全无效,求解

以下为CRules:

public class CRules
{
public int grade;
public int size;
public int point;
public int i;


public int pointc()
{
int u;
u = i + 1;
if (i == u)
{
point = point + 3;
}
return point;
}

public int levelup()
{
switch (point)
{
case 9:grade=1;break;
case 15:grade=2;break;
case 21:grade=3;break;
case 39:grade=4;break;
case 51:grade=5;break;
case 78:grade=6;break;
case 99:grade=7;break;
default: break;
}
return grade;
}

public long rules()
{
if (grade == 1)
{
size = 10485760;
}
else if (grade == 2)
{
size = 20971520;
}
else if (grade == 3)
{
size = 41943040;
}
else if (grade == 4)
{
size = 83886080;
}
else if (grade == 5)
{
size = 167772160;
}
else if (grade == 6)
{
size = 335544320;
}
else
{
size = 671088640;
}
return size;

}
}
...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pianoline2011 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

http://www.cnblogs.com/xianqingzh/archive/2009/04/30/1447143.html
[/Quote]

写好触发器了,但是加的莫名其妙的,一会一个没上传过文件的用户莫名其妙出现24分,又一会明明传了文件就是不加分。
pianoline2011 2012-05-07
  • 打赏
  • 举报
回复
CREATE TRIGGER rules
after insert on files
for each row
as begin
update users set point = point + 3;
end;


消息 102,级别 15,状态 1,过程 rules,第 2 行
'after' 附近有语法错误。
pianoline2011 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

http://www.cnblogs.com/xianqingzh/archive/2009/04/30/1447143.html
[/Quote]

那意思就是说如果触发Update,则point+3,然后一切照旧,就可以了吧?
pianoline2011 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

用数据库触发器实现吧
[/Quote]

那是什么?在哪里能找得到?
mizuho_2006 2012-05-07
  • 打赏
  • 举报
回复
用数据库触发器实现吧

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧