c#菜鸟类的问题 问一下,用c#实时扫描数据库的方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是WinForm的话,简单点用的时间控件,定时去扫描下数据库 实时扫描是定时扫描还是数据库有了变化就扫描前者用timer后者用触发器 对!你可以在数据库前加一个数据访问层次,对数据库的访问都通过它,一旦有人修改数据库,你就触发EVENT,让各个客户端了解响应信息。event里可以封装有关数据库更新的信息 什么叫扫描数据库?我大概写了一小段,呵呵。你自己看看……内容通过了编译,但我没有测试任何DBProcessor,如果你要写自己的处理器,继承一下DBProcessor,重载execute就可以了。这个类循环执行指定的数据库处理程序,你可以写N多的DBProcessor,比如:检查某条记录或者某行记录是否存在,或者执行一次插入,合并,更新的语句等。 public class DBEngine { private List<DBProcessor> procor; private Thread executing; public DBEngine() { procor = new List<DBProcessor>(); } public void RegisterProcor(DBProcessor dbp) { if (!executing.IsAlive) procor.Add(dbp); } private void Executing() { while (true) { Thread.Sleep(3000); foreach (var i in procor) { try { i.Excute(); } catch { } Thread.Sleep(500); } } } }下面这个类是用于处理数据库中的数据的…… public abstract class DBProcessor { protected SqlConnection conn; public DBProcessor(SqlConnection conn) { this.conn = conn; } public abstract void Excute(); protected void ExexuteSQLException(string s) { SqlCommand scu = new SqlCommand(s, conn); scu.ExecuteNonQuery(); } protected void ExecuteSQLList(List<string> sqls) { SqlTransaction st = Config.co_exe.BeginTransaction(); try { string sqla = ""; foreach (var e in sqls) { if (e.Trim().Length > 0) sqla += (e + ";"); } SqlCommand scu = new SqlCommand(sqla, Config.co_exe); scu.Transaction = st; scu.ExecuteNonQuery(); st.Commit(); } catch { st.Rollback(); } } } c# 操作C或C++ DLL:如何解析结构体中指向另一结构体的指针? 在获取个人生日的日期问题! vs2005 编译失败,但是错误列表确不显示出来 奇怪,奇怪!!! vs2005 中,能用C#开发web程序吗? 紧急问题!如何用C#实现五笔首字母查询? 如何在网页中用C#实现两点间的画线 C#能不能进行流的转接? GPS数据问题 如何将在winForm中访问一个网页,并将其脚本保存为XML文件 使用ADSI应该怎样来创建用户的邮箱 命名空间的父、子、孙之间是否有什么编程、开发等逻辑关系,还是仅仅为了便于分块管理? 什么是c#的三层结构?如何组织命名空间结构
前者用timer
后者用触发器
{
private List<DBProcessor> procor;
private Thread executing; public DBEngine()
{
procor = new List<DBProcessor>(); } public void RegisterProcor(DBProcessor dbp)
{
if (!executing.IsAlive)
procor.Add(dbp);
} private void Executing()
{
while (true)
{
Thread.Sleep(3000);
foreach (var i in procor)
{
try
{
i.Excute();
}
catch
{
}
Thread.Sleep(500);
}
}
}
}
下面这个类是用于处理数据库中的数据的…… public abstract class DBProcessor
{ protected SqlConnection conn; public DBProcessor(SqlConnection conn)
{
this.conn = conn;
} public abstract void Excute(); protected void ExexuteSQLException(string s)
{
SqlCommand scu = new SqlCommand(s, conn);
scu.ExecuteNonQuery();
} protected void ExecuteSQLList(List<string> sqls)
{
SqlTransaction st = Config.co_exe.BeginTransaction();
try
{
string sqla = "";
foreach (var e in sqls)
{
if (e.Trim().Length > 0)
sqla += (e + ";");
}
SqlCommand scu = new SqlCommand(sqla, Config.co_exe); scu.Transaction = st;
scu.ExecuteNonQuery(); st.Commit();
}
catch
{
st.Rollback();
}
} }