root/Baza Reklam 2 - Faktury/Classes/KursyWalut.cs @ 2

Wersja 2, 3.4 KB (wprowadzona przez dorota, 17 years temu)
RevLine 
[2]1using System;
2using System.Data;
3using System.Data.SqlClient;
4using System.Collections.Generic;
5using System.Text;
6using System.Windows.Forms;
7using System.Net;
8using System.Text.RegularExpressions;
9
10
11namespace Baza_Reklam.Classes
12{
13    class KursyWalut
14    {
15        private string adres = @"http://www.nbp.gov.pl/Kursy/xml/";
16        private DataSet test;
17
18        private string query = "INSERT INTO Kursy_Walut " +
19                " (Numer_Tabeli, Data_Publikacji, nazwa_waluty, przelicznik, Kod_Waluty, Kurs_Sredni) " +
20                " VALUES(@Numer_Tabeli,@Data_Publikacji,@nazwa_waluty,@przelicznik,@Kod_Waluty,@Kurs_Sredni)";
21
22        SqlCommand command;
23
24
25        public KursyWalut()
26        {
27            test = new DataSet();
28            command = new SqlCommand(query, new SqlConnection(ConnString.getConnString().Value));
29        }
30
31
32        private DateTime dataOstatniegoKursu() {
33       
34            SqlCommand command = new SqlCommand(
35                "select top 1 Data_Publikacji from dbo.Kursy_Walut order by Data_Publikacji desc",
36                new SqlConnection(ConnString.getConnString().Value));
37
38            command.Connection.Open();
39               
40            object o = command.ExecuteScalar();
41
42            command.Connection.Close();
43
44            return (DateTime) (o ?? DateTime.Today);
45
46        }
47
48        public void pobierzKursy()
49        {
50            DateTime od = dataOstatniegoKursu();
51
52            //lista kursow ze strony
53            string dir = LoadDir();
54
55            MatchCollection matchCol;
56               
57            while (od <= DateTime.Today)
58            {                               
59                string pattern = "a" + @"\d\d\d[z]" + od.ToString("yyMMdd");
60               
61                Regex reg = new Regex(pattern);
62               
63                matchCol = reg.Matches(dir);
64
65                for (int i = 0; i < matchCol.Count;i++)
66                {
67                    //MessageBox.Show(matchCol[i].Value);
68                    pobierzKurs(matchCol[i].Value);
69                }
70               
71                od = od.AddDays(1);
72            }           
73        }
74
75        public void pobierzKurs(string nazwaTabeli)
76        {
77            string adresTabeli = adres + nazwaTabeli + ".xml";
78
79            test.Clear();
80            test.ReadXml(adresTabeli);
81
82            command.Connection.Open();
83
84            foreach (DataRow d in test.Tables["pozycja"].Rows)
85            {
86
87            command.Parameters.Clear();           
88 
89            command.Parameters.AddWithValue("@Numer_Tabeli", test.Tables["tabela_kursow"].Rows[0][0]);
90            command.Parameters.AddWithValue("@Data_Publikacji", test.Tables["tabela_kursow"].Rows[0][1]);
91            command.Parameters.AddWithValue("@nazwa_waluty", d[0]);
92            command.Parameters.AddWithValue("@przelicznik", d[1]);
93            command.Parameters.AddWithValue("@Kod_Waluty", d[2]);
94            command.Parameters.AddWithValue("@Kurs_Sredni", Convert.ToDecimal(d[3]));
95           
96            command.ExecuteNonQuery();
97
98            }
99
100            command.Connection.Close();
101        }
102
103        private string LoadDir()
104        {
105            WebClient wcCL = new WebClient();
106            byte[] data = wcCL.DownloadData(adres + "dir.txt");
107            return ASCIIEncoding.ASCII.GetString(data);
108        }
109    }
110}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.