==================================================
-- 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 存储过程的更多相关文章

  1. 功能:formatter 表单提交 拼接参数的形式

    datagarid的formatter属性 value: 代表当前单元格中的值.row:代表当前行.index: 代表当前行的下标. {field:'is_hot',title:'是否热门',widt ...

  2. java Servlet+mysql 调用带有输入参数和返回值的存储过程(原创)

    这个数据访问的功能,我在.NET+Mysql .NET+Sqlserver  PHP+Mysql上都实现过,并且都发布在了我博客园里面,因为我觉得这个功能实在是太重要,会让你少写很多SQL语句不说,还 ...

  3. 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案

    如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...

  4. sql 解析字符串添加到临时表中 sql存储过程in 参数输入

    sql 解析字符串添加到临时表中  sql存储过程in 参数输入 解决方法 把字符串解析 添加到 临时表中 SELECT * into #临时表   FROM dbo.Func_SplitOneCol ...

  5. 把两个DataTable连接起来,相当于Sql的Inner Join方法

    在C#中把两个DataTable连接起来,相当于Sql的Inner Join方法 作者:浪漫十一狼在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inne ...

  6. 执行多条SQL语句,实现数据库事务(不可传入Sql参数)

    执行多条SQL语句,实现数据库事务(不可传入Sql参数) http://blog.csdn.net/hanxuemin12345/article/details/9980371

  7. 输入值/表单提交参数过滤有效防止sql注入的方法

    输入值/表单提交参数过滤,防止sql注入或非法攻击的方法:  代码如下: /** * 过滤sql与php文件操作的关键字 * @param string $string * @return strin ...

  8. MyBatis的参数,不能传入null

    今天在调试的过程中发现一个bug,把传入的参数写到查询分析器中执行没有问题,但是在程序中执行就报错:org.springframework.jdbc.UncategorizedSQLException ...

  9. 【转】Python之可变参数,*参数,**参数,以及传入*参数,进行解包

    https://blog.csdn.net/cadi2011/article/details/84871401 1.定义了一个需要两个参数的函数 def print_str(first, second ...

随机推荐

  1. sencha touch 在安卓中横屏、竖屏切换 应用崩溃问题

    答案来至于 Sencha Touch 交流 @周旭 这是由于横竖屏转换导致activity重跑onCreate方法导致的,有两种解决方案:1.横竖屏转换的时候不要重新跑onCreate方法,这个可以在 ...

  2. parent.relativePath' points at wrong local POM

    这个错误通常是下载了子项目,没有把父项目下载下来. 子项目要依赖父项目的pom The relative path of the parent pom.xml file within the chec ...

  3. 原生JS实现ajax 发送post请求

    1. [代码]原生JS实现ajax 发送post请求 <script> var oStr = ''; var postData = {}; var oAjax = null; //post ...

  4. 构建Maven项目时常见错误

    一.Maven项目,右键-update project后JRE system Library变为JavaSE1.6 Dynamic Web Module 3.0 requires Java 1.6 o ...

  5. 关于graham扫描法求凸包的小记

    1.首先,凸包是啥: 若是在二维平面上,则一般的,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它能包含点集中所有的点. ───────────────────────────── ...

  6. redis系列之数据库与缓存数据一致性解决方案

    redis系列之数据库与缓存数据一致性解决方案 数据库与缓存读写模式策略 写完数据库后是否需要马上更新缓存还是直接删除缓存? (1).如果写数据库的值与更新到缓存值是一样的,不需要经过任何的计算,可以 ...

  7. Mybatis 代码自动生成[myeclipse版]

    使用环境说明: OS:windows 7 64位 myeclipse: 2017 CI 1.安装 打开myeclipse--help---Install from catalog--选择eclipse ...

  8. HTML标签_head标签

    HTML标签分为两种,自闭合标签和主动闭合标签:没有另一半 自动闭合标签,有另一半叫主动闭合标签. 自动闭合标签,只有开头没有结尾,即没有另一半:如<meta charset="UTF ...

  9. idea启动java Maven项目,出现" java: 程序包xxxx不存在"

    今天运行Maven项目的时候,出现了,Error:(19, 17) java: 程序包tracetool不存在的情况 本人的解决办法: (1)首先确保maven  pom文件不能报错,即文件上面不能有 ...

  10. Heavy Transportation---poj1797

    求(Dijkstra算法,求每条路径上的最小值 的最大值)和青蛙的那题类似:   #include<iostream> #include<stdio.h> #include&l ...