如何 ︰ 执行批量更新和插入使用.NET 提供程序在 C#.NET OpenXML
2016-04-20 10:43
731 查看
https://support.microsoft.com/zh-cn/kb/315968
Print
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 315968
为这篇文章的一个 Microsoft Visual c + +.net 版本,请参阅 316245。
下面的 Microsoft.net 框架类库命名空间引用这篇文章:
System.Data
System.Data.SqlClient
Requirements
Create the Project
REFERENCES
概要
本分步指南介绍了如何执行批量插入,用OpenXML方法的更新与其他 Microsoft.NET 数据提供程序。尽管本文中的示例使用 SqlClient 托管提供程序,您还可以使用 OLEDB 或 ODBC 托管提供程序。
返回页首
Microsoft Windows 2000 专业版,Microsoft Windows 2000 服务器,Microsoft Windows 2000 高级服务器或 Microsoft Windows NT 4.0 服务器
Microsoft Visual Studio.NET
Microsoft SQL Server 2000
返回页首
在 SQL Server 中使用以下代码创建一个存储的过程 ︰
Visual Studio 的.NET,开始,然后在 Visual C#.NET 中创建新的控制台应用程序项目。
复制并将下面的代码粘贴到控制台应用程序中的Class1中 ︰
修改为您的环境相应的连接字符串。
按 F5 键生成并运行该应用程序。
按 ENTER 键关闭控制台窗口中,当应用程序停止运行时。
注意︰ 此示例不包含任何错误处理。
如何 ︰ 执行批量更新和插入使用.NET 提供程序在 C#.NET OpenXML
Email注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 315968
为这篇文章的一个 Microsoft Visual c + +.net 版本,请参阅 316245。
下面的 Microsoft.net 框架类库命名空间引用这篇文章:
System.Data
System.Data.SqlClient
本任务中
SUMMARYRequirements
Create the Project
REFERENCES
概要
本分步指南介绍了如何执行批量插入,用OpenXML方法的更新与其他 Microsoft.NET 数据提供程序。尽管本文中的示例使用 SqlClient 托管提供程序,您还可以使用 OLEDB 或 ODBC 托管提供程序。
返回页首
要求
下面的列表列出了推荐使用的硬件、 软件、 网络基础结构和所需的服务包 ︰Microsoft Windows 2000 专业版,Microsoft Windows 2000 服务器,Microsoft Windows 2000 高级服务器或 Microsoft Windows NT 4.0 服务器
Microsoft Visual Studio.NET
Microsoft SQL Server 2000
返回页首
创建项目
在 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] GO CREATE 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
在 SQL Server 中使用以下代码创建一个存储的过程 ︰
CREATE PROC sp_UpdateXML @empdata nText AS 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)) XMLEmployee WHERE 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)) XMLEmployee Where XMLEmployee.EmployeeId Not IN (Select EmployeeID from Employee) EXEC sp_xml_removedocument @hDoc GO
Visual Studio 的.NET,开始,然后在 Visual C#.NET 中创建新的控制台应用程序项目。
复制并将下面的代码粘贴到控制台应用程序中的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); } } }
修改为您的环境相应的连接字符串。
按 F5 键生成并运行该应用程序。
按 ENTER 键关闭控制台窗口中,当应用程序停止运行时。
注意︰ 此示例不包含任何错误处理。
相关文章推荐
- c# windows服务程序
- 关于WCF的InstanceContextMode,与会话相关
- C# RSA加密解密
- C#调用银联接口 posinf.dll方法调用
- c#控制台输入语句
- C# DataGridView 导出Excle代码和总结(转)
- C# Winform 遍历面板控件,写入XML
- <Pro WPF 4.5 in C#> - Note-03
- ref和out的区别
- C#学习笔记 day_three
- C#的Enum中Flags的用法
- C# indexof如何截取两个特定字符之间的字符串
- C#泛型文章汇总
- C#求完数的代码
- 在 Visual C# 中,模拟登录界面与主窗体的交互
- 降低Winform占用系统内存的方法-将物理内存的占用挪到虚拟内存里
- 降低Winform占用系统内存的方法-将物理内存的占用挪到虚拟内存里
- 降低Winform占用系统内存的方法-将物理内存的占用挪到虚拟内存里
- 降低Winform占用系统内存的方法-将物理内存的占用挪到虚拟内存里
- 降低Winform占用系统内存的方法-将物理内存的占用挪到虚拟内存里