簡體   English   中英

如何將URL中的XmL數據保存到數據庫中

[英]how can i save XmL data from a URL into my database

我知道如何將XML數據加載到字符串中,但是無法將其內容(XML文件節點中的內容)存儲到數據庫中。 我已經嘗試了許多解決方案,但是在我的情況下它們都沒有用。 XML鏈接是:-

http://timesofindia.indiatimes.com/rssfeedstopstories.cms

我只想保存XML文件的節點中存在的數據,而XML文件來自URL。

使用(var client = new WebClient()){字符串xmlData = new System.Net.WebClient()。DownloadString(“ http://timesofindia.indiatimes.com/rssfeedstopstories.cms ”); XmlDocument xml =新的XmlDocument(); XmlNodeList nodeList = xml.SelectNodes(“ / rss / channel / item”);

            foreach (XmlNode node in nodeList)
            {
                var title = node["title"].InnerText;
                var description = node["description"].InnerText;
                var link = node["link"].InnerText;
                var guid = node["guid"].InnerText;
                var pubdate = node["pubDate"].InnerText;
                SqlConnection cnn = new SqlConnection(@"Data Source=vishal-pc\mssqlserver2012;Initial Catalog=aditya;User ID=sa;password=1234");
                SqlCommand cmd = new SqlCommand("insert into XMLdata (title,description,link,guid,pubdate) VALUES (@xmlData,@xmlData1,@xmlData2,@xmlData3,@xmlData4)", cnn);
                cnn.Open();

                //string sqlForInsert = "INSERT INTO XMLdata (title,description,link,guid,pubdate) VALUES (@xmlData,@xmlData1,@xmlData2,@xmlData3,@xmlData4);";
                int rowsAffected = 0;
                //try
                //{
                //    using (SqlConnection con = new SqlConnection(@"Data Source=vishal-pc\mssqlserver2012;Initial Catalog=aditya;User ID=sa;password=1234"))
                //    using (SqlCommand cmd = new SqlCommand(sqlForInsert, con))
                    {
                        cmd.Parameters.Add(new SqlParameter("@xmlData", title));
                        cmd.Parameters.Add(new SqlParameter("@xmlData1", description));
                        cmd.Parameters.Add(new SqlParameter("@xmlData2", link));
                        cmd.Parameters.Add(new SqlParameter("@xmlData3", guid));
                        cmd.Parameters.Add(new SqlParameter("@xmlData4", pubdate));

                        rowsAffected = cmd.ExecuteNonQuery();
                        cnn.Close();
                    }

試試這個,你要做的一切:

  1. 更改連接字符串
  2. 更改插入查詢作為您的要求
  3. 添加其他參數

     string xmlData = new System.Net.WebClient().DownloadString("http://timesofindia.indiatimes.com/rssfeedstopstories.cms"); string sqlForInsert = "INSERT INTO TableName (xmlDataField) VALUES (@xmlData);"; int rowsAffected = 0; try { using (SqlConnection con = new SqlConnection("<ConnectionString>")) using (SqlCommand cmd = new SqlCommand(sqlForInsert, con)) { cmd.Parameters.Add(new SqlParameter("xmlData", xmlData)); con.Open(); rowsAffected = cmd.ExecuteNonQuery(); } } catch (Exception ex) { //Exception Handling } if (rowsAffected > 0) { //Successful } else { //unsuccesfull } 

調試您的代碼。
打印異常消息。
檢查受影響的行的值。
檢查xmlDataField列的數據類型和SqlParameter中的一種。

enter code here

             using (var client = new WebClient())
             {
            string xmlData = new System.Net.WebClient().DownloadString("http://timesofindia.indiatimes.com/rssfeedstopstories.cms");
              XmlDocument xml = new XmlDocument();
                 xml.LoadXml(xmlData);

            XmlNodeList nodeList = xml.SelectNodes("/rss/channel/item");

            foreach (XmlNode node in nodeList)
            {
                var title = node["title"].InnerText;
                var description = node["description"].InnerText;
                var link = node["link"].InnerText;
                var guid = node["guid"].InnerText;
                var pubdate = node["pubDate"].InnerText;
                SqlConnection cnn = new SqlConnection(@"Data Source=vishal-pc\mssqlserver2012;Initial Catalog=aditya;User ID=sa;password=1234");
                SqlCommand cmd = new SqlCommand("insert into XMLdata (title,description,link,guid,pubdate) VALUES (@xmlData,@xmlData1,@xmlData2,@xmlData3,@xmlData4)", cnn);


                //string sqlForInsert = "INSERT INTO XMLdata (title,description,link,guid,pubdate) VALUES (@xmlData,@xmlData1,@xmlData2,@xmlData3,@xmlData4);";
                int rowsAffected = 0;
                //try
                //{
                //    using (SqlConnection con = new SqlConnection(@"Data Source=vishal-pc\mssqlserver2012;Initial Catalog=aditya;User ID=sa;password=1234"))
                //    using (SqlCommand cmd = new SqlCommand(sqlForInsert, con))
                    {
                        cmd.Parameters.Add(new SqlParameter("@xmlData", title));
                        cmd.Parameters.Add(new SqlParameter("@xmlData1", description));
                        cmd.Parameters.Add(new SqlParameter("@xmlData2", link));
                        cmd.Parameters.Add(new SqlParameter("@xmlData3", guid));
                        cmd.Parameters.Add(new SqlParameter("@xmlData4", pubdate));
                            cnn.Open();

                        rowsAffected = cmd.ExecuteNonQuery();

                        cnn.Close();
                    }
        XElement rssFeeds = null;
        using (var client = new WebClient())
        {
            try
            {
                string rssString = new System.Net.WebClient().DownloadString("http://timesofindia.indiatimes.com/rssfeedstopstories.cms");
                rssFeeds = XElement.Parse(rssString);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
        if (rssFeeds != null)
        {
            using (SqlConnection con = new SqlConnection(@"Data Source=vishal-pc\mssqlserver2012;Initial Catalog=aditya;User ID=sa;password=1234"))
            {
                con.Open();
                var tran = con.BeginTransaction();
                try
                {
                    rssFeeds.Descendants("item").ToList().ForEach(e =>
                    {
                        string insertSql = @"insert into XMLdata (title,description,link,guid,pubdate) VALUES (@title,@description,@link,@guid,pubdate)";
                        SqlCommand cmd = new SqlCommand(insertSql, con, tran);
                        cmd.Parameters.Add(new SqlParameter("title", e.Element("title").Value));
                        cmd.Parameters.Add(new SqlParameter("description", e.Element("description").Value));
                        cmd.Parameters.Add(new SqlParameter("link", e.Element("link").Value));
                        cmd.Parameters.Add(new SqlParameter("guid", e.Element("guid").Value));
                        cmd.Parameters.Add(new SqlParameter("pubdate", e.Element("pubDate").Value));
                        cmd.ExecuteNonQuery();
                    });
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    Debug.WriteLine(ex.Message);
                }

            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM