0

私はクラス ライブラリを持っています。Ms. Access でレコードを選択し、選択したレコードを取得して SQL Server に挿入します。

public class SyncDatabase
{
  private static SyncDatabase objs = null;
  public static SyncDatabase GetInstance
  {
    get
    {
      if (objs == null)
           objs = new SyncDatabase();

           return objs;
      }   
    }

    OleDbConnection con = new OleDbConnection("Provider=Microsoft.jet.oledb.4.0; data source=C:/Users/cheata/Desktop/TimeSheet.mdb");
   public void GetData()
   {
      con.Open();
      OleDbCommand cmd = new OleDbCommand("select * from tblEmployee_TimeSheet", con);
      DataTable dt = new DataTable();
      dt.Load(cmd.ExecuteReader());

      var _data = dt.AsEnumerable().Select(row => new tblEmployee_TimeSheet
                                           {
                                              ID = row.Field<int>(0),
                                              EID = row.Field<int>(1),
                                              CheckIn = row.Field<DateTime>(2),
                                              CheckOut = row.Field<DateTime>(3),
                                              DateCheck = row.Field<DateTime>(4)
                                           }).ToList();

     con.Close();
     var context =  TimeSheetDataContext.GetInstance;

     foreach (tblEmployee_TimeSheet obj in _data)
     {
       context.Insert<tblEmployee_TimeSheet>(obj);
     }
   }

}

スレッドで記述したウィンドウ サービスが 1 つあります。ウィンドウが起動すると、MyWindowService も起動します。そして、スレッドを呼び出しますOnStart

SyncDatabaseスレッドでクラス ライブラリを呼び出し、挿入する値が SQL Server のレコードに既に存在するかどうかをメソッドでOnStart確認します。OnStart

これは私のスレッドです:

public partial class Thread : ServiceBase
{
  public Thread()
  {
    InitializeComponent();
  }

  protected override void OnStart(string[] args)
  {

  }

  protected override void OnStop()
  {
  }
}

誰でもその方法を教えてください。

ありがとうございます。

4

2 に答える 2