最近公司客服提交了个BUG,说是更新产品详细信息时,有的可以有的更新不了,前段时间一直没空所以暂时放下,刚才又出现这个问题,所以马上处理了一下。

  打开项目解决方案,进入DEBUG模式,拿到操作的数据提交后进行追踪,发现提交时产生了:System.Data.SqlClient.SqlException (0x80131904): 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 4 ("@up_xxx"): 数据类型 0xA7 的数据长度或元数据长度无效。

  百度一下发现是由于更新字符串过长引发的异常,必须将参数的Size设置为-1才行,所以按下图处理

  

private static void AddParams(DbCommand cmd, QueryCommand qry)
{
if(qry.Parameters != null)
{
foreach(QueryParameter param in qry.Parameters)
{
DbParameter p = cmd.CreateParameter();
p.ParameterName = param.ParameterName;
p.Direction = param.Mode;
p.DbType = param.DataType;
/*
* 修 改 人:Empty(AllEmpty)
* QQ 群:327360708
* 博客地址:http://www.cnblogs.com/EmptyFS/
* 修改时间:2014-04-09
* 修改说明:修改提交的字符串长度过长产生的Bug
* 异常信息:System.Data.SqlClient.SqlException (0x80131904): 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。
* 参数 4 ("@up_xxx"): 数据类型 0xA7 的数据长度或元数据长度无效。
*********************************************/
if (param.DataType.ToString() == "AnsiString")
{
p.Size = -;
} //output parameters need to define a size
//our default is 50
if(p.Direction == ParameterDirection.Output || p.Direction == ParameterDirection.InputOutput)
p.Size = param.Size; //fix for NULLs as parameter values
if(param.ParameterValue == null)
{
p.Value = DBNull.Value;
}
else if(param.DataType == DbType.Guid)
{
string paramValue = param.ParameterValue.ToString();
if (!String.IsNullOrEmpty(paramValue))
{
if(!paramValue.Equals("DEFAULT", StringComparison.InvariantCultureIgnoreCase))
p.Value = new Guid(paramValue);
}
else
p.Value = DBNull.Value;
}
else
p.Value = param.ParameterValue; cmd.Parameters.Add(p);
}
}
}

  然后重新运行,可以正常提交。

  

  添加完以上代码后,将SubSonic3.0插件源码重新生成一下就可以正常使用了。

 版权声明:

  本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明(否则保留追究责任的权利),且在文章页面明显位置给出原文链接,如有问题,可以通过1654937@qq.com 联系我,非常感谢。

  发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708 或Email给我(1654937@qq.com),大家一起探讨。

  更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/

关于SubSonic3.0插件更新字符串过长引发的System.Data.SqlClient.SqlException的异常修复的更多相关文章

  1. System.data.sqlclient.sqlexception:将截断字符串或二进制数据终止

    System.data.sqlclient.sqlexception:将截断字符串或二进制数据终止. 错误原因:输入的字符串长度超过数据库设置的长度

  2. System.Data.SqlClient.SqlException: 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。) .

    今天使用sql server 2008 R2管理器,进行SQL查询时,频率非常高的报错: System.Data.SqlClient.SqlException: 在向服务器发送请求时发生传输级错误. ...

  3. asp.net EF6.0中出现未找到具有固定名称“System.Data.SqlClient”的 ADO.NET提供程序的实体框架提供程序解决办法

    出现的错误信息如下所示: 指定的架构无效.错误:  DataModel.ssdl(2,2) : 错误 0152: 未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提 ...

  4. System.Data.SqlClient.SqlException (0x80131904): EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。 EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。

    EF使用ExecuteSqlCommand(db.Database.ExecuteSqlCommand("exec proc_DeleteCaseInfo_Output @caseID&qu ...

  5. EF6.0中出现未找到具有固定名称“System.Data.SqlClient”的 ADO.NET提供程序的实体框架提供程序解决办法

    在多工程项目中,由于EF封装在某一个工程里,那么该项目用于EF相关类库 EntityFramework.dll,以及EntityFramework.SqlServer.dll的引用 那么你一个启动工程 ...

  6. 关于SubSonic3.0插件使用实体进行更新操作时(执行T.Update()或T.Save()),某些列无法进行修改操作的问题处理

    SubSonic3.0插件在创建实体后,对实体进行赋值操作时,为了去除一些不必要更新的字段,减少更新的内容,会将更新内容与默认值进行比较,如果默认值与当前更新的内容相等时,则不提交更新本列,这主要是为 ...

  7. 关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复

    早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例 执行代码:

  8. 关于SubSonic3.0插件使用SubSonic.Query.Select查询时,字段类型为tinyint时列丢失问题的Bug修复

    下午在写代码时,突然发现一个列名为Enable的字段怎么也查询不出来,开始以为可能这个名称是关键字,所以给过滤掉了,所以就将名称修改为IsEnable,问题还是一样......将名称又改为IsEnab ...

  9. 错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败

    错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, Pu ...

随机推荐

  1. POI3.8解决导出大数据量excel文件时内存溢出的问题

    POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表格且堆空间有限时使用.SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入 ...

  2. c和oc小知识

    1.const const 修饰了*p1 / *p2 const int * p1=&age; int const * p2=&age;//和上面的意义一样 ,换句话说就是 在 “ * ...

  3. JQ 常见demo

    使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: <!DOCTYPE html> <html> <head> <script src= ...

  4. 使用Prerender.io为angular项目做SEO

    现在的项目的为了更好的分工明确,降低耦合都开始采用前后端分离的形式进式开发,我们也采用这种开发形式,前端用angular开发.虽说刚开始也遇各种坑,但是后期熟悉了之后简直爽呆.一个比较大的坑就是SEO ...

  5. swiper插件 纵向内容超出一屏解决办法

    1.css .swiper-slide { overflow: auto; } 2.js var swiper = new Swiper('.swiper-container', { directio ...

  6. bzoj3380+3381+3382+3383 Usaco2004 Open

    四道比较水的题 T1:SPFA+状压 #include<stdio.h> #include<string.h> #include<algorithm> #inclu ...

  7. .Net中的反应式编程(Reactive Programming)

    系列主题:基于消息的软件架构模型演变 一.反应式编程(Reactive Programming) 1.什么是反应式编程:反应式编程(Reactive programming)简称Rx,他是一个使用LI ...

  8. SQL Server对比两字段的相似度(函数算法)

    相似度函数 概述    比较两个字段的相似度    最近有人问到关于两个字段求相似度的函数,所以就写了一篇关于相似度的函数,分别是“简单的模糊匹配”,“顺序匹配”,“一对一位置匹配”.在平时的这种函数 ...

  9. 更新Literacy

    之前都没有做单元测试的啊 昨天离职了,闲着没事做了个单元测试,结果发现一堆问题....大部分都是关于值类型在IL中的操作问题... 这件事让我感觉蛋蛋隐隐发疼....以后一定要做单元测试啊.... 具 ...

  10. C语言 · 求矩阵各个元素的和

    问题描述 这里写问题描述. 输入格式 测试数据的输入一定会满足的格式. 例:输入的第一行包含两个整数n, m,分别表示矩阵的行数和列数.接下来n行,每行m个正整数,表示输入的矩阵. 输出格式 要求用户 ...