Witam wszystkich mam taki problem napisałem sobie program (na tyle ile umiałem ;)) logujący się na pewną stronę i zaciągający dane.
private void Form1_Load(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand(@"SELECT [Id] FROM [wyklady_test].[dbo].[OrderBook_Prod] WHERE [Id] > 100, con);
var client = new CookieAwareWebClient();
client.BaseAddress = @"https://jakasstrona.pl";
var loginData = new NameValueCollection();
loginData.Add("login", "login");
loginData.Add("password", "pass");
client.UploadValues("", "POST", loginData);
try
{
con.Open();
using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
string id = (read["Id"].ToString());
string urlhtml = ("https://www.jakastrona.pl/szukaj/inv_id/" + id + ");
string htmlSource = client.DownloadString(urlhtml);
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlSource);
try
{
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//html//body//div//div//div//div//div//div//div//div//div//h3//a[@href]"))
{
hrefValue = link.GetAttributeValue("href", string.Empty);
}
var htmlData = client.DownloadData(@"https://www.jakasstrona.pl" + hrefValue);
var htmlCode = Encoding.UTF8.GetString(htmlData);
Encoding iso = Encoding.GetEncoding("UTF-8");
var doc1 = new HtmlAgilityPack.HtmlDocument();
doc1.LoadHtml(htmlCode);
foreach (HtmlNode link1 in doc1.DocumentNode.SelectNodes("//*[@class=\"col-xs-12 col-sm-9 p-b-1\"]"))
{
hrefValue = link1.InnerText;
StringBuilder builderp = new StringBuilder(hrefValue);
builderp.Replace(" ", " ");
builderp.Replace("Więcej", "");
builderp.Replace("▾", "");
builderp.Replace("ó", "ó");
builderp.Replace(" ", "");
builderp.Replace(" ", "");
builderp.Replace(" ", "");
builderp.Replace("\n-", "-");
builderp.Replace("\n\n", "\n");
tekst_obrobiony = builderp.ToString();
}
aktualizacja_info(Convert.ToInt32(id), tekst_obrobiony);
}
catch
{
}
}
}
}
finally
{
con.Close();
}
}
public void aktualizacja_info(int id, string tekst_obrobiony)
{
var connetionString = @"Data Source=TESTOWY\SQLEXPRESS;Initial Catalog=wyklady_test;Integrated Security=True";
using (var con1 = new SqlConnection(connetionString))
using (var cmd1 = con1.CreateCommand())
{
cmd1.CommandText = @"UPDATE [wyklady_test].[dbo].[OrderBook_Prod] SET [informacja] = '" + tekst_obrobiony + "' WHERE [Id] = " + id;
MessageBox.Show(cmd1.CommandText.ToString());
con1.Open();
cmd1.ExecuteNonQuery();
}
}
I teraz tak ten kod działa idealnie jak chcę żeby działał wszystko zapisuje do bazy ale jak tylko zmienię pierwszego string'a sql z:
SELECT [Id] FROM [wyklady_test].[dbo].[OrderBook_Prod] WHERE [Id] > 100
na
SELECT [Id] FROM [wyklady_test].[dbo].[OrderBook_Prod] WHERE [Id] > 100 and [informacja] != 'Brak'
No to dostaję przy próbie UPDATE komunikat że serwer SQL nie odpowiada a przecież przy update nic nie zmieniam??
cmd1.CommandText = @"UPDATE [wyklady_test].[dbo].[OrderBook_Prod] SET [informacja] = '" + tekst_obrobiony + "' WHERE [Id] = " + id;