2014-01-29 6 views
0

Вот код ... все в порядке с кодом, но он просто делает txt-файл, тогда как я хочу сделать это, когда он читает txt-файл и сохраняет его в базе данных .. .... помогите мне, пожалуйстаПрочтите из txt-файла и запишите его в базу данных

static void Main(string[] args) 
{ 
     McdonaldScrapper(); 
     //PizzaHutScrapper(); 
     //KFCScrapper(); 
} 

private static void McdonaldScrapper() 
{ 
     try 
     { 
      MatchCollection mcl; 
      WebClient webClient = new WebClient(); 
      string strUrl = "http://www.mcdonalds.com.pk/products/view/menu-pricelist"; 
      byte[] reqHTML; 
      reqHTML = webClient.DownloadData(strUrl); 
      UTF8Encoding objUTF8 = new UTF8Encoding(); 
      string pageContent = objUTF8.GetString(reqHTML); 
      int index = pageContent.IndexOf("<div id=\"BodyText\">"); 
      pageContent = pageContent.Substring(index); 


      Regex r = new Regex(@"(<td .*?</td>)"); 
      mcl = r.Matches(pageContent); 
      int count = 0; 
      StringBuilder strBuilder = new StringBuilder(); 
      string name = ""; 
      string price = ""; 
      foreach (Match ml in mcl) 
      { 


       string updatedString = ml.Value.Remove(ml.Value.IndexOf("</td>")); 
       if (count % 2 == 0) 
       { 
        name = updatedString.Remove(0, updatedString.IndexOf('>') + 1); 
       } 
       else 
       { 
        price = updatedString.Remove(0, updatedString.IndexOf('>') + 1); 
        strBuilder.Append(name + " ,  " + price + "\r\n"); 
       } 
       count++; 

      } 

      File.WriteAllText(@"E:\McdonaldsMenu.txt", strBuilder.ToString().Replace("<br />", "").Replace("&amp;", "").Replace("&nbsp;", "")); 
      SaveMcdonaldsMenuToDB(); 
      Console.WriteLine("Press any key to continue"); 
      Console.ReadKey(); 

     } 
     catch (Exception ex) 
     { } 
    } 

    private static void SaveMcdonaldsMenuToDB() 
    { 
     try 
     { 
      int counter = 0; 
      string line; 

      System.IO.StreamReader file = new System.IO.StreamReader("E:\\McdonaldsMenu.txt"); 
      Dictionary<string, string> menuAndPriceList = new Dictionary<string, string>(); 
      while ((line = file.ReadLine()) != null) 
      { 
       if (!menuAndPriceList.ContainsKey(line.Split(',')[0].Trim())) 
       { 
        menuAndPriceList.Add(line.Split(',')[0].Trim(), line.Split(',')[1].Trim()); 

        counter++; 
       } 
      } 

      file.Close(); 
      SqlConnection myConnection = new SqlConnection(); 
      string Constr = @"Data Source=Samsung;Initial Catalog=MAAK FYP; Integrated Security=True"; 
      myConnection = new SqlConnection(Constr); 
      myConnection.Open(); 
//    SqlCommand cmd = new SqlCommand (""); 
//    SqlCommand cmd = new SqlCommand("INSERT into Table33(Product_Name,Product_Price) values(menuAndPriceList[i].key,menuAndPriceList[i].Value)"); 

      for(int i=0; i<menuAndPriceList.Count; i++) 
          { 
     SqlCommand cmd = new SqlCommand("INSERT into Table33(Product_Name,Product_Price) values(menuAndPriceList[i].key,menuAndPriceList[i].Value)"); 

         } 

      Console.ReadLine(); 
     } 
     catch (Exception ex) 
     { } 
    } 
+0

Вы должны попробовать использовать [HTML Agility Pack] (http://htmlagilitypack.codeplex.com/) для вашего синтаксического анализа html [вместо регулярного выражения] (http://www.codinghorror.com/blog/2009/11/ синтаксический-HTML-заместитель ктулх-way.html). – paqogomez

+0

Добро пожаловать в SO! Что конкретно не работает, когда вы пытаетесь записать данные в базу данных? – Derek

ответ

6

вы никогда не выполнить команду вставки, вы должны сделать cmd.ExecuteNonQuery(); или что-то подобное.

Кроме того, вместо передачи аргументов команде вы вызываете синтаксическую ошибку. Используйте это вместо этого:

SqlCommand cmd = new SqlCommand("INSERT into Table33(Product_Name,Product_Price) values(@name, @price)"); 
cmd.Parameters.AddWithValue("@name", menuAndPriceList[i].key); 
cmd.Parameters.AddWithValue("@price", menuAndPriceList[i].Value); 
cmd.ExecuteNonQuery(); 

В качестве другого побочного элемента не допускайте всех исключений, не делая ничего с пойманным исключением. Посмотрите на исключения, брошенные, запишите их, иначе вы не представляете, что происходит не так.

Смежные вопросы