private async Task UpdateProfile() { Stopwatch sw = new System.Diagnostics.Stopwatch(); this.txtUpdateStatus.Text += "企業情報取得・更新開始" + Environment.NewLine; // 情報の取得 List <Utility.ProfileEntity> listProfile = new List <Utility.ProfileEntity>(); List <Utility.StockPriceEntity> listStockPrice = new List <Utility.StockPriceEntity>(); List <Utility.TargetEntity> targetCode; using (Utility.DbUtil db = new Utility.DbUtil()) { targetCode = db.DBSelect <Utility.TargetEntity>("SELECT * FROM targetcode ORDER BY TargetStockCode "); db.DBUpdate("DELETE FROM profile "); } await Task.Run(() => { using (Utility.DbUtil db = new Utility.DbUtil()) { // 全削除する db.DBUpdate("DELETE FROM profile "); } }); foreach (TargetEntity r in targetCode) { sw.Restart(); await Task.Delay(1000); await Task.Run(() => { Utility.FinanceUtil finance = new Utility.FinanceUtil(); listProfile = finance.GetProfileEntityList(r.TargetStockCode); }); await Task.Run(() => { using (Utility.DbUtil db = new Utility.DbUtil()) { // 登録 string insertSql = @"INSERT INTO profile ( StockCode ,CompanyName ,Feature ,ConcatenationBusiness ,HeadquartersLocation ,IndustriesCategory ,FoundationDate ,MarketName ,ListedDate ,ClosingMonth ,UnitShares ,EmployeeNumberSingle ,EmployeeNumberConcatenation ,AvarageAnnualIncome ) VALUES ( :StockCode ,:CompanyName ,:Feature ,:ConcatenationBusiness ,:HeadquartersLocation ,:IndustriesCategory ,:FoundationDate ,:MarketName ,:ListedDate ,:ClosingMonth ,:UnitShares ,:EmployeeNumberSingle ,:EmployeeNumberConcatenation ,:AvarageAnnualIncome )"; db.DBInsert(insertSql, listProfile); } }); sw.Stop(); this.txtUpdateStatus.Text += r.TargetStockCode.ToString().PadLeft(4, '0') + " データ更新 " + sw.Elapsed.ToString() + Environment.NewLine; this.txtUpdateStatus.SelectionStart = this.txtUpdateStatus.TextLength; this.txtUpdateStatus.ScrollToCaret(); } this.txtUpdateStatus.Text += "企業情報取得・更新終了" + Environment.NewLine; this.txtUpdateStatus.SelectionStart = this.txtUpdateStatus.TextLength; this.txtUpdateStatus.ScrollToCaret(); await Task.Run(() => { using (Utility.DbUtil db = new Utility.DbUtil()) { // 全削除する db.DBUpdate("DELETE FROM stockcode WHERE stockcode.StockCode NOT IN (SELECT StockCode FROM profile)"); } }); }
private async Task UpdateStockPriceAndProfile() { Stopwatch sw = new System.Diagnostics.Stopwatch(); this.txtUpdateStatus.Text += "企業情報取得・更新開始" + Environment.NewLine; // 情報の取得 List <Utility.ProfileEntity> listProfile = new List <Utility.ProfileEntity>(); List <Utility.StockPriceEntity> listStockPrice = new List <Utility.StockPriceEntity>(); List <Utility.TargetEntity> targetCode; using (Utility.DbUtil db = new Utility.DbUtil()) { targetCode = db.DBSelect <Utility.TargetEntity>("SELECT * FROM targetcode ORDER BY TargetStockCode "); db.DBUpdate("DELETE FROM profile "); } foreach (TargetEntity r in targetCode) { sw.Restart(); await Task.Run(() => { Utility.FinanceUtil finance = new Utility.FinanceUtil(); listProfile = finance.GetProfileEntityList(r.TargetStockCode); }); await Task.Run(() => { Utility.FinanceUtil finance = new Utility.FinanceUtil(); listStockPrice = finance.GetStockPriceEntityList(r.TargetStockCode); }); await Task.Run(() => { using (Utility.DbUtil db = new Utility.DbUtil()) { // 削除 db.DBUpdate("DELETE FROM profile WHERE StockCode = :StockCode ", new { StockCode = r.TargetStockCode }); var query = from q in listStockPrice where q.StockCode == r.TargetStockCode select q; db.DBUpdate("DELETE FROM stockprice WHERE StockCode = :StockCode AND StockDate BETWEEN :BeginDate AND :EndDate ", new { StockCode = r.TargetStockCode, BeginDate = query.Min(stock => stock.StockDate), EndDate = query.Max(stock => stock.StockDate) }); // 登録 string insertSql = @"INSERT INTO profile ( StockCode ,CompanyName ,Feature ,ConcatenationBusiness ,HeadquartersLocation ,IndustriesCategory ,FoundationDate ,MarketName ,ListedDate ,ClosingMonth ,UnitShares ,EmployeeNumberSingle ,EmployeeNumberConcatenation ,AvarageAnnualIncome ) VALUES ( :StockCode ,:CompanyName ,:Feature ,:ConcatenationBusiness ,:HeadquartersLocation ,:IndustriesCategory ,:FoundationDate ,:MarketName ,:ListedDate ,:ClosingMonth ,:UnitShares ,:EmployeeNumberSingle ,:EmployeeNumberConcatenation ,:AvarageAnnualIncome )"; db.DBInsert(insertSql, listProfile); string insertSql2 = @"INSERT INTO stockprice ( StockCode ,CompanyName ,StockDate ,OpeningPrice ,HighPrice ,LowPrice ,ClosingPrice ,TradeVolume ,AdjustmentClosingPrice ) VALUES ( :StockCode ,:CompanyName ,:StockDate ,:OpeningPrice ,:HighPrice ,:LowPrice ,:ClosingPrice ,:TradeVolume ,:AdjustmentClosingPrice )"; db.DBInsert(insertSql2, listStockPrice); } }); sw.Stop(); this.txtUpdateStatus.Text += r.TargetStockCode.ToString().PadLeft(4, '0') + " データ更新 " + sw.Elapsed.ToString() + Environment.NewLine; this.txtUpdateStatus.SelectionStart = this.txtUpdateStatus.TextLength; this.txtUpdateStatus.ScrollToCaret(); } this.txtUpdateStatus.Text += "企業情報取得・更新終了" + Environment.NewLine; this.txtUpdateStatus.SelectionStart = this.txtUpdateStatus.TextLength; this.txtUpdateStatus.ScrollToCaret(); }