Teď jste offline a čekáte, až se znova připojí internet.

POSTUPY: Provádět hromadné aktualizace a vložení pomocí OpenXML s zprostředkovatele .NET v aplikaci Visual C# .NET

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

315968
Aplikace Microsoft Visual C++ .NET verzi tohoto článku v tématu 316245.
Tento článek se týká následujících oborů názvů knihovny tříd technologie Microsoft .NET Framework:
  • System.data
  • System.data.SqlClient

V TOMTO ÚKOLU

Souhrn
Tento podrobný článek popisuje, jak hromadnou vloží a aktualizuje pomocí různých zprostředkovatelů dat rozhraní Microsoft .NET OpenXML metodou. Ačkoli ve vzorku v tomto článku používá SqlClient spravovaného zprostředkovatele, můžete také použít OLEDB nebo ODBC spravovaného zprostředkovatele.

back to the top

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které potřebujete:
  • Systém Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server nebo Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 2000
back to the top

Vytvoření projektu

  1. Vytvořte tabulku s následující kód na serveru 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. Na serveru SQL Server, vytvoření uložené procedury s následujícím kódem:
    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. Spusťte aplikaci Visual Studio .NET a pak vytvořit nový projekt aplikace konzoly v aplikaci Visual C# .NET.
  4. Zkopírujte a vložte následující kód do Class1 konzolové aplikace:
    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. Upravit připojovací řetězec vhodné pro vaše prostředí.
  6. Stisknutím klávesy F5, chcete-li vytvořit a spustit aplikaci.
  7. Stisknutím klávesy ENTER zavřete okno konzoly aplikace se zastaví.
Poznámka: Tento příklad neobsahuje žádné zpracování chyb.

back to the top
Odkazy
Další informace o použití poskytovatele spravované .NET získáte článku znalostní báze Microsoft Knowledge Base:
313480INFORMACE: Průvodce pro zprostředkovatele dat .NET
back to the top

Upozornění: Tento článek byl přeložen automaticky

Vlastnosti

ID článku: 315968 - Poslední kontrola: 12/26/2003 23:22:43 - Revize: 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 KbMtcs
Váš názor