C# 如何把dataTable以参数的形式传入 sql 存储过程
==================================================
-- sql代码 示例:
CREATE TYPE dbo.Content AS TABLE
(
ID int, --ID
OutCashAccountNo nvarchar(100), --出账账号
OutName nvarchar(50),
InCashAccountNo nvarchar(100), --进账账号
InName nvarchar(50),
CashType int,
Amount decimal(36,16), --金额
IsSuccess int, --是否成功
YuanYin nvarchar(200), --成功或失败原因
RemarkContent nvarchar(300), --ID+YuanYin//199_交易失败嘎嘎
RunWater nvarchar(300), --ID + GUID//RunWater 19982a21f02-d184-499f-a69f-32af77851f83
AddTime DateTime, --FinanceLog 表 AddTime
Type int, --FinanceLog 表 Type
OperationType int --FinanceLog 表 OperationType
)
go
--更新DebtAssignmentCashFlow
create procedure [dbo].[updateDebtAssignmentCashFlow2]
@InsertData Content READONLY --readonly
as
begin
update DebtAssignmentCashFlow set CashType=3
from DebtAssignmentCashFlow as d
inner join @InsertData as t
on d.ID=t.ID
end
go
======================================================================================
--C# 代码示例:
--调用
DataTable data2 = new DataTable();
data2 = Extensions.ToDataTable(newList);
int k = updateDebtAssignmentCashFlow2(data2);
/// <summary>
/// 批量更新DebtAssignmentCashFlow
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private static int updateDebtAssignmentCashFlow2(DataTable dt)
{
bool flg = true;
int c = 0;
try
{
SqlConnection con = new SqlConnection(connString);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "updateDebtAssignmentCashFlow2";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@InsertData", SqlDbType.Structured);
cmd.Parameters[0].Value = dt;
c = cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
EF.BLL.LogHelper.Instance.Log.Info(string.Format("[error]:{0},表DebtAssignmentCashFlow批量更新失败!", ex));
flg = false;
c = -1;
}
return c;
}
如果datable 没有做列的映射的话,列的顺序与自定义表类型的顺序不一致会导致插入失败
这个时候就需要 DataTable 调整列顺序:
- dt.Columns["BatchNo"].SetOrdinal();
- dt.Columns["CardCode"].SetOrdinal();
- dt.Columns["PhoneNumber"].SetOrdinal();
把 BatchNo 列设置为第一列
C# 如何把dataTable以参数的形式传入 sql 存储过程的更多相关文章
- 功能:formatter 表单提交 拼接参数的形式
datagarid的formatter属性 value: 代表当前单元格中的值.row:代表当前行.index: 代表当前行的下标. {field:'is_hot',title:'是否热门',widt ...
- java Servlet+mysql 调用带有输入参数和返回值的存储过程(原创)
这个数据访问的功能,我在.NET+Mysql .NET+Sqlserver PHP+Mysql上都实现过,并且都发布在了我博客园里面,因为我觉得这个功能实在是太重要,会让你少写很多SQL语句不说,还 ...
- 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案
如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...
- sql 解析字符串添加到临时表中 sql存储过程in 参数输入
sql 解析字符串添加到临时表中 sql存储过程in 参数输入 解决方法 把字符串解析 添加到 临时表中 SELECT * into #临时表 FROM dbo.Func_SplitOneCol ...
- 把两个DataTable连接起来,相当于Sql的Inner Join方法
在C#中把两个DataTable连接起来,相当于Sql的Inner Join方法 作者:浪漫十一狼在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inne ...
- 执行多条SQL语句,实现数据库事务(不可传入Sql参数)
执行多条SQL语句,实现数据库事务(不可传入Sql参数) http://blog.csdn.net/hanxuemin12345/article/details/9980371
- 输入值/表单提交参数过滤有效防止sql注入的方法
输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: 代码如下: /** * 过滤sql与php文件操作的关键字 * @param string $string * @return strin ...
- MyBatis的参数,不能传入null
今天在调试的过程中发现一个bug,把传入的参数写到查询分析器中执行没有问题,但是在程序中执行就报错:org.springframework.jdbc.UncategorizedSQLException ...
- 【转】Python之可变参数,*参数,**参数,以及传入*参数,进行解包
https://blog.csdn.net/cadi2011/article/details/84871401 1.定义了一个需要两个参数的函数 def print_str(first, second ...
随机推荐
- [原]git的使用(一)---建立本地仓库、add和commit、status和git diff、版本回退使用git reset
在window下已经安装了git的环境 1.建立本地仓库 mkdir test #建立test目录 cd test #进入目录 git init # ...
- 父窗口 和 iframe 互相访问
在父窗口中获取iframe中的元素 1. 格式:window.frames["iframe的name值"].document.getElementByIdx_x("ifr ...
- Laya 图集动画
参考: 图集动画运用 一.准备素材 从爱给网找到几个素材 二.使用Laya的图集工具 菜单栏选择工具->图集打包工具,然后选择序列图所在的文件夹 生成了个.rec...说好的.atlas呢... ...
- mysql概要(十四)(二)索引(补充:外键级联操作)
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | CASCADE | S ...
- java基础解析系列(一)---String、StringBuffer、StringBuilder
java基础解析系列(一)---String.StringBuffer.StringBuilder 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bu ...
- 怎么点击div之外的区域就隐藏这个div啊 找了很久,都没有很好解决
方法一. <!DOCTYPE html><html><head><meta http-equiv="Content-Type" conte ...
- Centralized Cache Management in HDFS
Overview(概述) Centralized cache management in HDFS is an explicit caching mechanism that allows users ...
- 编译x11版本qt
用buildroot 选择x11相关 在选择qt x11版本 export PATH=~/buildroot/output/host/usr/bin:$PATH 进入~/buildroot/out ...
- IRC and security tools
login::: /msg NickServ identify <password>. join::: /join #metasploit 浏览器: Tor操作系统: Tails加 ...
- REQUEST FORM 实例
https://www.programcreek.com/python/example/51524/flask.request.form