현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

대량 업데이트 및 삽입 .NET 공급자 Visual C# .NET을 사용하여 OpenXML 사용 방법 수행

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

315968
이 문서에서는 Visual C++ .NET 버전에 316245 참조하십시오.
이 문서에서는 다음 Microsoft .NET Framework 클래스 라이브러리의 네임스페이스를 참조합니다.
  • System.Data
  • System.Data.SqlClient

이 작업의

요약
이 문서에서는 대량 삽입 작업을 수행할 방법을 설명하고 OpenXML 메서드를 사용하여 다른 Microsoft .NET 데이터 공급자를 사용하여 업데이트합니다. 이 문서의 예제 SqlClient 관리되는 공급자를 사용하는 경우에도 해당 OLEDB 또는 ODBC 관리 공급자를 사용할 수도 있습니다.

back to the top

요구 사항

다음은 권장되는 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩의 목록입니다.
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Server 또는 Microsoft Windows NT 4.0 Server 고급
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 2000
back to the top

프로젝트 만들기

  1. 다음 코드를 사용하여 SQL Server에서 테이블 만들기:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Employee]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[Employee]GOCREATE TABLE [dbo].[Employee] (	[EmployeeId] [int] NOT NULL ,	[FirstName] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,	[LastName] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY]GO					
  2. SQL Server에서 다음 코드를 사용하여 저장된 프로시저 만들기:
    CREATE PROC sp_UpdateXML @empdata nTextAS  DECLARE @hDoc int    exec sp_xml_preparedocument @hDoc OUTPUT,@empdata   --This code updates old data. UPDATE Employee  SET    Employee.FirstName = XMLEmployee.FirstName,   Employee.LastName = XMLEmployee.LastName FROM OPENXML(@hDoc, 'NewDataSet/Employee')          WITH (EmployeeId Integer, FirstName varchar(100),  LastName varchar(100))  XMLEmployeeWHERE    Employee.EmployeeId = XMLEmployee.EmployeeId--This code inserts new data.Insert Into Employee SELECT   EmployeeId, FirstName, LastName	FROM       OPENXML (@hdoc, '/NewDataSet/Employee',1)WITH (EmployeeId Integer, FirstName varchar(100),  LastName varchar(100))  XMLEmployeeWhere XMLEmployee.EmployeeId Not IN (Select EmployeeID from Employee)EXEC sp_xml_removedocument @hDocGO					
  3. Visual Studio .NET 시작하고 Visual C# .NET에서 새 콘솔 응용 프로그램 프로젝트를 만듭니다.
  4. 로 콘솔 응용 프로그램의 Class1 다음 코드를 붙여 넣습니다.
    using System;using System.Data.SqlClient;using System.Data;namespace ConsoleApplication1{    /// <summary>    /// Summary description for Class1    /// </summary>    class Class1    {        /// <summary>        /// Main entry point for the application        /// </summary>        [STAThread]        static void Main(string[] args)        {            try            {                BulkInsertUpdate();                    System.Console.WriteLine("Successfully inserted and updated data");                    System.Console.Read();            }            catch (System.Data.SqlClient.SqlException e)            {                System.Diagnostics.Debug.WriteLine (e.Message);                 System.Console.WriteLine(e.Message);            }        }        static void BulkInsertUpdate()        {            //Steps:            //1. Create the dataset.            //2. Update the dataset.            //3. Insert some data.            //4. Save the changed data as XML            //   and send XML to SQL Server through the stored procedure.			            //Declaration            System.Data.DataSet         objDS;            SqlConnection               objCon;            SqlCommand                  objCom1;            SqlDataAdapter              objAdpt1;            String                      sConn;            sConn = "user id=myUser;password=YourPassword;" +                     "Database=YourDatabase;Server=YourServer";            objDS = new DataSet();            objCon = new SqlConnection(sConn);            objCon.Open();            objCom1 = new SqlCommand();            objCom1.Connection = objCon;            objAdpt1 = new SqlDataAdapter();            //Step 1: Create the dataset.            CreateDataSetFromEmployee(objDS, objCom1,objAdpt1);			            //Step 2: Update the dataset.            System.Data.DataTable tbl = objDS.Tables["Employee"];            //DataRow aRow;            int i = 0;            foreach (DataRow aRow in tbl.Rows)            {                i++;                aRow["FirstName"] = aRow["FirstName"].ToString() + i;                aRow["LastName"] = aRow["LastName"].ToString() + i;            }			            //Step 3: Insert some data.            for( int ii = 1; ii <= 5; ii++)            {                DataRow	   newRow = tbl.NewRow();                int j = ii+100;                newRow["EmployeeId"] = j;                newRow["FirstName"] = "Fname" + j;                newRow["LastName"] = "LName" + j;                tbl.Rows.Add( newRow);            }			            //Step 4: Save the changed data as XML,             //and send the XML to SQL Server through the stored procedure.            //In SQL Server, you wrote a stored procedure that            //accepts this XML and updates the corresponding table.            SaveThroughXML(objDS, objCon);        }        static void SaveThroughXML(DataSet objDS, SqlConnection objCon)        {            //Change the column mapping first.            DataTable                    tbl = objDS.Tables["Employee"];            System.Text.StringBuilder    sb = new System.Text.StringBuilder( 1000);            System.IO.StringWriter       sw = new System.IO.StringWriter(sb);			            foreach( DataColumn col in tbl.Columns)            {                col.ColumnMapping = System.Data.MappingType.Attribute;            }            objDS.WriteXml(sw, System.Data.XmlWriteMode.WriteSchema);            SqlCommand objCom = new SqlCommand();            objCom.Connection = objCon;            objCom.CommandType = CommandType.StoredProcedure;            objCom.CommandText = "sp_UpdateXML";	            objCom.Parameters.Add( new SqlParameter( "@empdata",                    System.Data.SqlDbType.NText));            objCom.Parameters[0].Value = sb.ToString();;            objCom.ExecuteNonQuery();        }        static void CreateDataSetFromEmployee( DataSet objDS,         SqlCommand objCom1,SqlDataAdapter objAdpt1)        {            //Create related objects.            objCom1.CommandType = CommandType.Text;            objCom1.CommandText = "Select EmployeeId, FirstName,LastName from Employee";            //Fill the Orders table.            objAdpt1.SelectCommand = objCom1;            objAdpt1.TableMappings.Add("Table", "Employee");            objAdpt1.Fill(objDS);				        }    }}					
  5. 사용자 환경에 맞게 연결 문자열을 수정하십시오.
  6. F5 키를 눌러 빌드하고 응용 프로그램을 실행합니다.
  7. 응용 프로그램 실행이 중지될 때 콘솔 창을 닫으려면 Enter 키를 누릅니다.
참고: 이 예제는 모든 오류 처리가 포함되어 있지 않습니다.

back to the top
참조
.NET 관리 공급자 사용에 대한 자세한 내용은 아래 문서 번호를 눌러 Microsoft 기술 자료에 있는 문서를 클릭하십시오.
313480.NET 데이터 공급자 정보: 로드맵
back to the top

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 315968 - 마지막 검토: 12/26/2003 23:22:43 - 수정: 3.5

Microsoft ADO.NET 1.1, Microsoft ADO.NET 1.0, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 64-bit Edition

  • kbmt kbhowtomaster kbsqlclient kbstoredproc kbsystemdata KB315968 KbMtko
피드백