2013-08-07 3 views
0

Я читаю XML-файл и сохраняю извлеченные данные в соответствии с элементами XML-файла. Я использую XmlReader. НО КОГДА Я ПРОДОЛЖАЮТ ПРОГРАММУ ... ЭТО РАБОТАЕТ СКОРОСТЬ, но в мой db отправляются только значения NULL. Мои коды следующим образом:C# NULL VALUES INSERTED IN DB

using System; 
using System.Xml; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 


public partial class _Default : System.Web.UI.Page 
{ 



    string org_id; 
    string org_desig; 
    string org_name; 
    string add_1; 
    string add_2; 
    string add_3; 
    string cityname; 
    string countrycode; 
    string countryname; 
    string postalcode; 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 

     // Load the XML file 
     XmlTextReader reader = new XmlTextReader("PXMLF-8612013050420130606105906.xml"); 

     // Loop over the XML file 
     while (reader.Read()) 
     { 
      // look for element 
      if (reader.NodeType == XmlNodeType.Element) 
      { 
       // If the element is the one required 
       if (reader.Name == "OrganizationID") 
       { 
        org_id = (reader.ReadElementString()); 

       } 

       if (reader.Name == "OrganisationDesignator") 
        { 

         org_desig = (reader.ReadElementString()); 
        } 

       if (reader.Name == "OrganizationName1") 
        { 

         org_name = (reader.ReadElementString()); 
        } 

       if (reader.Name == "AddressLine1") 
        { 

         add_1 = (reader.ReadElementString()); 
        } 

       if (reader.Name == "AddressLine2") 
        { 

         add_2 = (reader.ReadElementString()); 
        } 

       if (reader.Name == "AddressLine3") 
        { 

         add_3 = (reader.ReadElementString()); 
        } 

       if (reader.Name == "CityName") 
        { 

         cityname = (reader.ReadElementString()); 
        } 

       if (reader.Name == "CountryCode") 
        { 

         countrycode = (reader.ReadElementString()); 
        } 
       if (reader.Name == "CountryName") 
        { 

         countryname = (reader.ReadElementString()); 
        } 
       if (reader.Name == "PostalCode") 
        { 

         postalcode = (reader.ReadElementString()); 
        } 



      //populate table data from extracted values 

      //connect to db 
      string connStr = ConfigurationManager.ConnectionStrings["connXML"].ConnectionString; 
      SqlConnection con = new SqlConnection(connStr); 
      con.Open(); 

      //send extracted data to db 
      SqlCommand cmd = new SqlCommand(); 
      cmd.CommandText = "insert into INV_HEADER VALUES ('" + org_id + "','" + org_desig + "', '" + org_name + "' , '" + add_1 + "', '" + add_2 + "', '" + add_3 + "', '" + cityname + "', '" + countrycode + "', '" + countryname + "', '" + postalcode + "')"; 
      cmd.CommandType = CommandType.Text; 
      cmd.Connection = con; 
      cmd.ExecuteNonQuery(); 
      con.Close(); 
      reader.Close(); 
      } 

     } 
+3

WOAH CAPS НЕ НУЖНО ВСЕ ВРЕМЯ –

+0

Вы получаете ошибки? Вы подтвердили, что значения читаются из XML-файла правильно? – Paddyd

ответ

0

Кажется, вы вставляете значения после каждого считывателя. Читайте(). Попробуйте сделать вставку после цикла while.

using System; 
using System.Xml; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 


public partial class _Default : System.Web.UI.Page 
{ 
    string org_id; 
    string org_desig; 
    string org_name; 
    string add_1; 
    string add_2; 
    string add_3; 
    string cityname; 
    string countrycode; 
    string countryname; 
    string postalcode; 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     // Load the XML file 
     XmlTextReader reader = new XmlTextReader("PXMLF-8612013050420130606105906.xml"); 

     // Loop over the XML file 
     while (reader.Read()) 
     { 
      // look for element 
      if (reader.NodeType == XmlNodeType.Element) 
      { 
       // If the element is the one required 
       switch (reader.Name) 
       { 
        case "OrganizationID": 
         org_id = (reader.ReadElementString()); 
         break; 
        case "OrganisationDesignator": 
         org_desig = (reader.ReadElementString()); 
         break; 
        case "OrganizationName1": 
         org_name = (reader.ReadElementString()); 
         break; 
        case "AddressLine1": 
         add_1 = (reader.ReadElementString()); 
         break; 
        case "AddressLine2": 
         add_2 = (reader.ReadElementString()); 
         break; 
        case "AddressLine3": 
         add_3 = (reader.ReadElementString()); 
         break; 
        case "CityName": 
         cityname = (reader.ReadElementString()); 
         break; 
        case "CountryCode": 
         countrycode = (reader.ReadElementString()); 
         break; 
        case "CountryName": 
         countryname = (reader.ReadElementString()); 
         break; 
        case "PostalCode": 
         postalcode = (reader.ReadElementString()); 
         break; 
       } 
      } 
     } 

     //connect to db 
     string connStr = ConfigurationManager.ConnectionStrings["connXML"].ConnectionString; 
     SqlConnection con = new SqlConnection(connStr); 
     con.Open(); 

     //send extracted data to db 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandText = "insert into INV_HEADER VALUES ('" + org_id + "','" + org_desig + "', '" + org_name + 
          "' , '" + add_1 + "', '" + add_2 + "', '" + add_3 + "', '" + cityname + "', '" + 
          countrycode + "', '" + countryname + "', '" + postalcode + "')"; 
     cmd.CommandType = CommandType.Text; 
     cmd.Connection = con; 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
     reader.Close(); 
    } 
} 
+0

arjen это сработало. Хорошо (y) – user2660107

+0

@ user2660107 Голосование будет оценено по достоинству. :) – Arjen

+0

хе-хе жалко, что нового в hre не knw, чтобы проголосовать ....: D не один wud hav givn two, если cud hav – user2660107

0

Похоже reader.Read() метод петли только одна итерация. Почему бы вам не запустить его в режиме отладки и посмотреть, действительно ли переменные установлены на значения, полученные из узлов Xml? Если они правильно получают значения, тогда вам нужно проверить ваш CommandText. Скопируйте инструкцию SQL из CommandText и вставьте ее в SQL Server Management Studio и запустите ее, чтобы увидеть, действительно ли она вставляет запись (при условии, что вы используете SQL Server).

+0

updataes: Значения Yess считываются из xml @paddyd. Значения, как видно, также вставлены в базу данных. НО, но не в соответствующих столбцах. – user2660107