C#和SQL操作Xml
#region DataTableToXml
public static string DataTableToXml(System.Data.DataTable Dt)
{
StringBuilder sbHtml = new StringBuilder();
if (Dt.Rows.Count > 0)
{
sbHtml.Append("<Root>");
for (int j = 0; j < Dt.Rows.Count; j++)
{
sbHtml.Append("<Detail ");
for (int i = 0; i < Dt.Columns.Count; i++)
{
sbHtml.AppendFormat("{0}=\"{1}\" ", Dt.Columns[i], Dt.Rows[j][Dt.Columns[i]]);
}
sbHtml.Append("></Detail>");
}
sbHtml.Append("</Root>");
}
return sbHtml.ToString();
}
#endregion
USE [DataBaseName]
GO
/****** Object: StoredProcedure [dbo].[AdjustPriceDetail_Temp_Excel] Script Date: 12/25/2014 11:11:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[AdjustPriceDetail_Temp_Excel]
@UserName nvarchar(50),
@AdjustNo nvarchar(50),
@Detail NText
As
declare @hDoc int
Declare @ProductNo Nvarchar(50)
Declare @ErrorSql Nvarchar(200)
Begin Tran
Begin
set nocount on
------首先清除之前导入的数据
delete from AdjustPriceDetail_Temp where UserName=@UserName
-------导入表格
Select Top 0 ProductNo,GoldPrice,acGold,MStoneCost,SStoneCost,acStone,acLabor,acOthers,acTotal,SalesFactor,SalesPrice
Into #AdjustPrice From AdjustPriceDetail_Temp
exec sp_xml_preparedocument @hDoc output,@Detail
Insert Into #AdjustPrice(ProductNo,GoldPrice,acGold,MStoneCost,SStoneCost,acStone,acLabor,acOthers,acTotal,SalesFactor,SalesPrice)
Select ProductNo,GoldPrice,acGold,MStoneCost,SStoneCost,acStone,acLabor,acOthers,acTotal,SalesFactor,SalesPrice
from openxml(@hDoc,'/Root/Detail')
with AdjustPriceDetail_Temp where ProductNo<>''
if @@Error<>0 goto Err
exec sp_xml_removedocument @hDoc
--1.产品编号
Set @ProductNo=(Select Top 1 ProductNo From #AdjustPrice Group By ProductNo having(COUNT(ProductNo)>1))
IF @ProductNo Is Not Null
Begin
Set @ErrorSql= N'EXCEL表格中货品编号为:'+@ProductNo+'不能出现重复!';
Goto Err
End
Set @ProductNo=(Select Top 1 ProductNo From AdjustPriceDetail_Temp Where ProductNo In(Select ProductNo From #AdjustPrice))
IF @ProductNo Is Not Null
Begin
Set @ErrorSql= N'数据库中货品编号为:'+@ProductNo+'不能出现重复导入!';
Goto Err
End
Set @ProductNo=(Select Top 1 ProductNo From #AdjustPrice Where ProductNo NOT In(Select ProductNo From Product))
IF @ProductNo Is Not Null
Begin
Set @ErrorSql= N'库存表中不存在中货品编号为:'+@ProductNo+'的货品!';
Goto Err
End
INSERT INTO AdjustPriceDetail_Temp
([UserName]
,[AdjustPriceNo]
,[ProductNo]
,[ProductName]
,[StyleNo]
,[SubTypeNo]
,[ItemTypeNo]
,[FinenessNo]
,[SalesTypeNo]
,[NetWtGM]
,[acGoldWtGM]
,[GoldPrice]
,[acGold]
,[MStoneQty]
,[MStoneWt]
,[SStoneQty]
,[SStoneWt]
,[MStoneCost]
,[SStoneCost]
,[acStone]
,[acLabor]
,[acOthers]
,[acTotal]
,[SalesFactor]
,[SalesPrice])
select
@UserName,
@AdjustNo,
A.ProductNo,
B.ProductName,
B.StyleNo,
B.SubTypeNo,
B.ItemTypeNo,
B.FinenessNo,
B.SalesTypeNo,
B.NetWtGM,
B.acGoldWtGM,
A.GoldPrice,
A.acGold,
B.MStoneQty,
B.MStoneWt,
B.SStoneQty,
B.SStoneWt,
A.MStoneCost,
A.SStoneCost,
A.acStone,
A.acLabor,
A.acOthers,
A.acTotal,
A.SalesFactor,
A.SalesPrice
from #AdjustPrice AS A left join Product AS B On A.ProductNo = B.ProductNo
if @@Error<>0 goto Err
Drop Table #AdjustPrice
if @@Error<>0 goto Err
Select N'success' As ErrorSql
End
Commit Tran
Return
Err:
RollBack Tran
Select @ErrorSql As ErrorSql
Return
C#和SQL操作Xml的更多相关文章
- SQL操作XML
前面一段时间为了赶项目的进度,一直在加班,现在空闲了下来将前面碰到的问题整理了一下,发现了一些十分有用的,在此记录下来,看能不能帮助到遇到同样问题的朋友,此文仅是自己个人的意见,若存在问题,还望不宁赐 ...
- sql操作xml小总结
一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...
- (转)SQL对Xml字段的操作
T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和 ...
- SQL对Xml字段的操作
转:http://www.cnblogs.com/youring2/archive/2008/11/27/1342288.html T-Sql操作Xml数据 一.前言 SQL Server 2005 ...
- SQL Server 操作XML数据
.xml.exist 输入为XQuery表达式,返回0,1或是Null.0表示不存在,1表示存在,Null表示输入为空 .xml.value 输入为XQuery表达式,返回一个SQL Server标量 ...
- (轉載)sql server xml字段的操作
原文轉自:http://blog.csdn.net/hliq5399/article/details/8315373 另外可參考:https://msdn.microsoft.com/en-us/li ...
- sql server 操作xml例子
sql server 操作xml例子 /* sql xml 入门: --by jinjazz --http://blog.csdn.net/jinjazz 1.xml: 能认识元素.属性和值 2.xp ...
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...
- SqlServer简单的操作XML以及SQl的 try catch等统一格式
1:SqlServer简单的操作XML: ALTER PROCEDURE [dbo].[SP_CRM_FranchiseeRecharge_Money] @Create_By VARCHAR(), @ ...
随机推荐
- 关于O(n)算法
首先要明确一点,当数据规模达到百万时需用O(n)算法 如何实现O(n)算法,其实是对原有算法的一种改进 后者说是 原有算法+一点小性质=O(n)算法 下面我将举几个例子来说明这一点: 1.后缀数组中h ...
- nohup.out
nohup.out 文件的产生 linux的nohup命令的用法 不输出nohup.out nohup node app.js > /dev/null 2>&1 &
- Android4.0 -- UI控件之 Menu 菜单的的使用(一)
这一讲开始我们来讲一下Android中菜单的使用方法,菜单是应用中的普通的组件,主要是提供友好和专注的用户体验,你可以在你的Activity中使用 Menu APIs 来提供用户动作和其他选项的操 ...
- 数学(数论)BZOJ 3309:DZY Loves Math
Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...
- java NIO 资料总结
1.http://developer.51cto.com/art/201204/328340.htm 2.http://ifeve.com/file-channel/并发编程网系列 3 http:// ...
- jQuery技术内幕预览版.pdf1
第一章 总体构架 jQuery模块可以分为3部分:入口模块.底层支持模块和功能模块 浏览器功能测试模块提供了针对不同浏览器功能和bug的测试结果,其它模块基于测试结果解决浏览器之间的兼容性问题 回调函 ...
- How to install Apache Server on Windows
Note Those of you interested in the Apache 2.0.X tutorial, it has been abandon and I will no longer ...
- [SAM4N学习笔记]LED点灯程序
一.准备工作: 将上一节搭建的工程模板复制一份,命名为"1.blink",这作为我们开发的第一个程序. 二.程序编写: 板子上只有一个可控制的LED,就是LED ...
- arm汇编--ubuntu12.04 安装arm-linux交叉编译环境
1. 安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install gcc g++ libgcc1 libg++ make gdb 2.从ft ...
- javascript 通过IE ActiveX 获得本机内网ip
<HTML><HEAD><TITLE>WMI Scripting HTML</TITLE> <META http-equiv=Content-Ty ...