C#做一个windows服务来监控oracle数据库表空间中某个表中的数据更新的操作!
不停监视表中数据.
PS:A数据库里面的a表B数据库里面的b表要求a表里面的字段名与b表里面的字段相同,如果a表里面的记录在b表中不存在,那么a表里面的记录就完全同步过去
不停监视表中数据.
PS:A数据库里面的a表B数据库里面的b表要求a表里面的字段名与b表里面的字段相同,如果a表里面的记录在b表中不存在,那么a表里面的记录就完全同步过去
只用在服务里onstart函数直接写一个timer,可以自己设启动时间间隔,然后在timer函数里写检查更新的sql语句就可以了
的事件(注意 不要用 forms下面的timer )
在 时间时间里面写同步就OK了
建完项目 看看就会 没有什么麻烦的
只是注意下 服务的启动和 停止都是要有时间过程的 不要 在代码中启动立即停止 或者 停止立即启动
启动停止时 一定要判断服务状态
public static void BeginDo()
{
while (true)
{
if (Flag)
{
GC.Collect();
try
{
string sql = "select JobID from Jobs where IsLocked=0 and IsClose=0 order by JobID";
DataTable data = SqlHelper.GetData(sql, null, SqlHelper.ConnStr);
foreach (DataRow row in data.Rows)
{
SubThread subThread = new SubThread(int.Parse(row["JobID"].ToString()));
ThreadList.Add(subThread);
subThread.Start();
}
}
catch (Exception ex)
{
System.Diagnostics.EventLog.WriteEntry("专题平台后台服务异常", ex.Message);
}
}
//暂停5分钟
Thread.Sleep(300000);
}
}
protected override void OnStart(string[] args)
{
RunMyTimer();
} protected override void OnStop()
{
} /// <summary>
/// 服务器运行定时器
/// </summary>
private void RunMyTimer()
{
myTimer = new System.Timers.Timer();
myTimer.Interval = 1000; //没隔一秒跑一次
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(MTimedEvent);
myTimer.Enabled = true;
}
/// <summary>
/// 自定义定时器事件
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
private void MTimedEvent(object source, System.Timers.ElapsedEventArgs e)
{
DataSet ds = this.GetDataFromA();//从数据库A获取a表的记录集
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
//校验每条记录是否存在存在你B数据库的b表,如果没有新增一条记录
}
}