Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

COMMENT À : vous effectuez en bloc des mises à jour et des insertions utilisant OpenXML avec .NET Providers dans Visual C# .NET

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que feraient une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique. Si vous relevez des erreurs graves et souhaitez contribuer à l’amélioration du système, vous pouvez compléter l’enquête à votre disposition dans le bas des articles.

La version anglaise de cet article est la suivante: 315968
Pour une version Microsoft Visual C++ .NET de cet article, voyez 316245.
Cet article se réfère à l'espace de noms de la bibliothèque de classe Microsoft .NET Framework suivant
  • System.Data
  • System.Data.SqlClient

DANS CETTE TÂCH

Résumé
Cet article étape par étape décrit comment effectuer des insertions et met à jour avec des fournisseur de données différents Microsoft .NET en utilisant la méthode . Bien que l'exemple de cet article utilise le fournisseur managé SqlClient, vous pouvez aussi utiliser l'OLEDB ou le fournisseur ODBC managé.

back to the top

Exigences

La liste suivante indique le matériel les logiciels et l'infrastructure réseau recommandés ainsi que les Service Packs dont vous avez besoin
  • Microsoft Windows 2000 Professionnel Microsoft Windows 2000 Server Microsoft Windows 2000 Advanced Server ou Microsoft Windows NT 4.0 Serve
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 2000
back to the top

Créez le projet

  1. Dans SQL Server, créez une table par le code suivant :
    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. Dans SQL Server, créez une procédure stockée par le code suivant :
    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. Démarrez Visual Studio .NET et puis créez un nouveau projet Application console dans Visual C# .NET.
  4. Copiez et collez le code suivant dans de l'application console :
    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. Modifiez la chaîne de connexion en fonction de votre environnement
  6. Appuyez sur la touche F5 pour générer et pour exécuter l'application.
  7. Appuyez sur la touche ENTRÉE pour fermer la fenêtre de console lorsque l'application interrompt l'exécution.
REMARQUE : cet exemple n'inclut aucune la gestion d'erreurs.

back to the top
Références
Pour des informations supplémentaires sur l'utilisation de .NET Managed Providers, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
313480 INFO : introduction pour les fournisseur de données .NET
back to the top

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 315968 - Dernière mise à jour : 12/26/2003 23:22:43 - Révision : 3.3

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

  • kbhowtomaster kbsqlclient kbstoredproc kbsystemdata KB315968 KbMtfr kbmt
Commentaires
/html>cript>