'EnforceConstraints'에 해당되는 글 1건

  1. 2007.03.26 ADO.NET과 XML 문서의 동기화 상태로 문서 수정
posted by 써니루루 2007. 3. 26. 12:46

약간은 어려운 내용일 수 있다.
XmlDocument로는 문서와 Dataset과의 동기화가 되지 않아 XmlDataDocument를 이용하게된다.

아래는 이러한 내용을 보여주는 예제이다.


using System;
using System.Data;
using System.Data.SqlClient;
using System.Xml;

namespace XmlDataDocumentUpdate
{
    public class Class1
    {
        static void Main(string[] args)
        {
            //DataAdapter 객체 생성
            string strConn = "Data Source=localhost;Initial Catalog=booksourcedb;Integrated Security=True";
            string strSql = "SELECT * FROM book";
            SqlDataAdapter dataAdapter = new SqlDataAdapter(strSql, strConn);
            SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter);

            //데이터베이스에서 데이터 가져오기
            DataSet dataSet = new DataSet("booklist");
            dataAdapter.Fill(dataSet, "book");

            //XmlDataDocument 객체 생성
            XmlDataDocument xdd = new XmlDataDocument(dataSet);

            //XPath로 수정을 할 책 찾기
            string xpath = "/booklist/book[bid='b2']";
            XmlElement eBook = (XmlElement)xdd.SelectSingleNode(xpath);

            //책 가격을 수정
            XmlElement ePrice = (XmlElement)eBook.ChildNodes[4];
            dataSet.EnforceConstraints = false;
            ePrice.InnerText = Convert.ToString(12000);
            dataSet.EnforceConstraints = true;

            //변경된 DataSet 내용 보여주기
            DataTable dataTable = dataSet.Tables["book"];
            dataTable.PrimaryKey = new DataColumn[] { dataTable.Columns["bid"] };
            DataRow dataRow = dataTable.Rows.Find("b2");
            Console.WriteLine("원래 책 가격: " + dataRow["price", DataRowVersion.Original]);
            Console.WriteLine("수정 책 가격: " + dataRow["price"]);

            //데이터베이스에 업데이트
            dataAdapter.Update(dataSet, "book");
        }
    }
}



Ref. .NET 개발자를 위한 XML p.615