[新手]一个方法timer执行第二次出错
写了个windows服务,第一次可以更新数据库,但再等一分钟就不更新了,在控制台程序用直接调用几次都没问题,
在catch里写了个输出错误信息,结果也没有写,不太熟悉c#,希望高手能帮我解答一下
public void times()
{
timer = new System.Timers.Timer();
timer.Enabled = true;
timer.Interval = 60000;//执行间隔时间,单位为毫秒
timer.Start();
timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
}
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Get_monitordata();
}
public void Get_monitordata()
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "running.");
}
try
{
//判断
if (conn.State == System.Data.ConnectionState.Closed)
{
conn = db.conn(db.sqlConnectionCommand);
}
if (conn1.State == System.Data.ConnectionState.Closed)
{
conn1 = db.conn(db.sqlConnectionCommand1);
}
//多张表
for (int i = 0; i < DbUtil.table1.Length; i++)
{
maxdate[i] = this.selectMaxDate(DbUtil.table2[i]);
if (maxID == maxIDinit)
{
maxID = this.selectMaxid(DbUtil.table2[i]);
}
DataSet ds = db.selectData(conn, "SELECT * FROM ( SELECT * FROM " + DbUtil.table1[i] + " WHERE TIMESTAMP > TO_DATE('" + maxdate[i] + "','yyyy/MM/dd hh24:mi:ss') ORDER BY TIMESTAMP ASC) WHERE ROWNUM < 101 ", DbUtil.table1[i]);
DataTable dt = ds.Tables[DbUtil.table1[i]];
// DataSet ds2 = db.selectData(conn1, "SELECT * FROM "+ DbUtil.table2[i] +"WHERE 1=0", DbUtil.table2[i]);
// DataTable dt2 = ds2.Tables[DbUtil.table2[i]];
OracleCommand sqlCommand = new OracleCommand("SELECT * FROM " + DbUtil.table2[i] + " WHERE 1=0", conn1);
OracleDataAdapter sqlDataAdapter = new OracleDataAdapter();
sqlDataAdapter.SelectCommand = sqlCommand;
DataSet ds2 = new DataSet();
sqlDataAdapter.Fill(ds2, DbUtil.table2[i]);
DataTable dt2 = ds2.Tables[DbUtil.table2[i]];
//dt2.Columns.Add("FLAG",typeof(int));
for (int j = 0; j < dt.Rows.Count; j++)
{
DataRow dr = dt2.NewRow();
dr["FLAG"] = 1;
foreach (DataColumn column in dt.Columns)
{
if (column.ColumnName .Equals("ID"))
{
dr[column.ColumnName] = (++maxID);
continue;
}
dr[column.ColumnName] = dt.Rows[j][column];
}
dt2.Rows.Add(dr);
}
OracleCommandBuilder ocb = new OracleCommandBuilder(sqlDataAdapter);
sqlDataAdapter.Update(ds2, DbUtil.table2[i]);
sqlCommand.Dispose();
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "succ");
}
// maxdate[i] = dt.Rows[dt.Rows.Count - 1]["TIMESTAMP"]+"";
//maxid[i] = int.Parse(dt.Rows[dt.Rows.Count - 1]["ID"]+"");
}
}
catch(Exception e)
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + e.Message+"\n"+e.StackTrace);
}
return;
}
}