/// <summary> /// 디비에 insert함 타겟테이블은 lotto임 /// 추후 디테일 Insert할 경우 오버라이드 할것 /// </summary> /// <param name="con">SqlConn 객체</param> /// <param name="lotto">Lotto 클래스 객체 넣어줄것</param> private static void DBInsert(SqlConnection con, Lotto lotto) { #region DB Insert 시퀀스 SqlCommand com = new SqlCommand(); com.Connection = con; com.CommandType = CommandType.StoredProcedure; com.CommandText = "InsertLotto"; com.Parameters.AddWithValue("@lottonum", lotto.LottoNum); com.Parameters.AddWithValue("@winningnum", lotto.WinningNum); com.Parameters.AddWithValue("@etc", lotto.Etc); com.ExecuteNonQuery(); #endregion }
/// <summary> /// DataShow -> DataSet으로 .. 리스트에 값을 넣어주기로 함 /// </summary> void DataSet() { using (SqlConnection con = new SqlConnection(dbstring)) using (SqlCommand com = new SqlCommand()) { con.Open(); com.Connection = con; com.CommandType = System.Data.CommandType.StoredProcedure; com.CommandText = "GetEntryLotto"; SqlDataReader reader = com.ExecuteReader(); cbo_lottoNum.Items.Add("전체"); while (reader.Read()) { Lotto lotto = new Lotto(Convert.ToInt32(reader[0].ToString()), reader[1].ToString(), reader[2].ToString()); lottos.Add(lotto); cbo_lottoNum.Items.Add(lotto.LottoNum); } DataShow(lottos); } }
private void LottoParser(int final) { using (SqlConnection con = new SqlConnection(dbstring)) { con.Open(); bool flag = false; // 못읽는거 체크 여기 지워야함 //final = -1; while (true) { //정지구분 //if (final == 30) flag = true; string uriString = ConfigurationManager.AppSettings["url1"]; final += 1; uriString += "&drwNo=" + final; uri = new Uri(uriString); #region 효데이터 찾고 리스트 추가 시퀀스 HttpWebResponse response = WebRequest.Create(uri).GetResponse() as HttpWebResponse; StreamReader streamReader = new StreamReader(response.GetResponseStream(), Encoding.Default); string webString = streamReader.ReadToEnd(); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.LoadHtml(webString); // 최신회차의 로또가 있는지를 검사함 // DB에 이전 회차까지의 당첨번호가 있다면 <DB의 내역을 가져온다> // 만약 DB에 당첨번호가 없다면 < 파싱해 0 ~ 최신회차까지의 데이터를 전부 파싱한다. if (LottoValidChk(htmlDoc)) { MessageBox.Show("최신회차의 로또가 아직 없어요."); // 최신회차가 없고 데이터베이스에 저장된 인스턴스의 마지막 회차가 0이 아니라면 // 결국 디비가 최신이라는 의미임 if (GetFinalNum() != 0) { DataSet(); break; } } Lotto lotto = new Lotto(); string getInfo = htmlDoc.DocumentNode.SelectNodes("//meta")[3].GetAttributeValue("content", ""); lotto.LottoNum = Int32.Parse(getInfo.Remove(getInfo.IndexOf("회")).Remove(0, 4)); lotto.WinningNum = getInfo.Remove(getInfo.IndexOf(".")).Remove(0, getInfo.IndexOf("호") + 1); lotto.Etc = getInfo.Remove(getInfo.LastIndexOf(".")).Remove(0, getInfo.IndexOf(".") + 1); listLotto.Add(lotto); #endregion #region 상권이디테일 DetailLotto detailLotto = new DetailLotto(); detailLotto.LottoNum = Int32.Parse(getInfo.Remove(getInfo.IndexOf("회")).Remove(0, 4)); detailLotto.Rank = new int[5] { Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.InnerText.Remove(1)), Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.InnerText.Remove(1)), Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.InnerText.Remove(1)), Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.InnerText.Remove(1)), Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.InnerText.Remove(1)) }; detailLotto.Price = new string[5] { htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.InnerText.Replace("원", ""), htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.InnerText.Replace("원", ""), htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.InnerText.Replace("원", ""), htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.InnerText.Replace("원", ""), htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.InnerText.Replace("원", "") }; detailLotto.Person = new int[5] { Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText.Replace(",", "")), Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText.Replace(",", "")), Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText.Replace(",", "")), Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText.Replace(",", "")), Int32.Parse(htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText.Replace(",", "")) }; detailLotto.PersonPrice = new string[5] { htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText, htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText, htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText, htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText, htmlDoc.DocumentNode.SelectNodes("//tbody")[0].FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.FirstChild.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.NextSibling.InnerText }; listDetailLotto.Add(detailLotto); #endregion DBInsert(con, lotto); } DataSet(); } }