using System; using System.Data; using System.Data.SqlClient; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Net; using System.Text.RegularExpressions; namespace Baza_Reklam.Classes { class KursyWalut { private string adres = @"http://www.nbp.gov.pl/Kursy/xml/"; private DataSet test; private string query = "INSERT INTO Kursy_Walut " + " (Numer_Tabeli, Data_Publikacji, nazwa_waluty, przelicznik, Kod_Waluty, Kurs_Sredni) " + " VALUES(@Numer_Tabeli,@Data_Publikacji,@nazwa_waluty,@przelicznik,@Kod_Waluty,@Kurs_Sredni)"; SqlCommand command; public KursyWalut() { test = new DataSet(); command = new SqlCommand(query, new SqlConnection(ConnString.getConnString().Value)); } private DateTime dataOstatniegoKursu() { SqlCommand command = new SqlCommand( "select top 1 Data_Publikacji from dbo.Kursy_Walut order by Data_Publikacji desc", new SqlConnection(ConnString.getConnString().Value)); command.Connection.Open(); object o = command.ExecuteScalar(); command.Connection.Close(); return (DateTime) (o ?? DateTime.Today); } public void pobierzKursy() { DateTime od = dataOstatniegoKursu(); //lista kursow ze strony string dir = LoadDir(); MatchCollection matchCol; while (od <= DateTime.Today) { string pattern = "a" + @"\d\d\d[z]" + od.ToString("yyMMdd"); Regex reg = new Regex(pattern); matchCol = reg.Matches(dir); for (int i = 0; i < matchCol.Count;i++) { //MessageBox.Show(matchCol[i].Value); pobierzKurs(matchCol[i].Value); } od = od.AddDays(1); } } public void pobierzKurs(string nazwaTabeli) { string adresTabeli = adres + nazwaTabeli + ".xml"; test.Clear(); test.ReadXml(adresTabeli); command.Connection.Open(); foreach (DataRow d in test.Tables["pozycja"].Rows) { command.Parameters.Clear(); command.Parameters.AddWithValue("@Numer_Tabeli", test.Tables["tabela_kursow"].Rows[0][0]); command.Parameters.AddWithValue("@Data_Publikacji", test.Tables["tabela_kursow"].Rows[0][1]); command.Parameters.AddWithValue("@nazwa_waluty", d[0]); command.Parameters.AddWithValue("@przelicznik", d[1]); command.Parameters.AddWithValue("@Kod_Waluty", d[2]); command.Parameters.AddWithValue("@Kurs_Sredni", Convert.ToDecimal(d[3])); command.ExecuteNonQuery(); } command.Connection.Close(); } private string LoadDir() { WebClient wcCL = new WebClient(); byte[] data = wcCL.DownloadData(adres + "dir.txt"); return ASCIIEncoding.ASCII.GetString(data); } } }