subsonic3.0插件更新字符串过长引发的异常修复方法
最近公司客服提交了个BUG,说是更新产品详细信息时,有的可以有的更新不了,前段时间一直没空所以暂时放下,刚才又出现这个问题,所以马上处理了一下。
打开项目解决方案,进入DEBUG模式,拿到操作的数据提交后进行追踪,发现提交时产生了:System.Data.SqlClient.SqlException(0x80131904):传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数4("@up_xxx"):数据类型0xA7的数据长度或元数据长度无效。
百度一下发现是由于更新字符串过长引发的异常,必须将参数的Size设置为-1才行,所以按下图处理
privatestaticvoidAddParams(DbCommandcmd,QueryCommandqry)
{
if(qry.Parameters!=null)
{
foreach(QueryParameterparaminqry.Parameters)
{
DbParameterp=cmd.CreateParameter();
p.ParameterName=param.ParameterName;
p.Direction=param.Mode;
p.DbType=param.DataType;
/*
*修改人:Empty(AllEmpty)
*修改说明:修改提交的字符串长度过长产生的Bug
*异常信息:System.Data.SqlClient.SqlException(0x80131904):传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。
* 参数4("@up_xxx"):数据类型0xA7的数据长度或元数据长度无效。
*********************************************/
if(param.DataType.ToString()=="AnsiString")
{
p.Size=-1;
}
//outputparametersneedtodefineasize
//ourdefaultis50
if(p.Direction==ParameterDirection.Output||p.Direction==ParameterDirection.InputOutput)
p.Size=param.Size;
//fixforNULLsasparametervalues
if(param.ParameterValue==null)
{
p.Value=DBNull.Value;
}
elseif(param.DataType==DbType.Guid)
{
stringparamValue=param.ParameterValue.ToString();
if(!String.IsNullOrEmpty(paramValue))
{
if(!paramValue.Equals("DEFAULT",StringComparison.InvariantCultureIgnoreCase))
p.Value=newGuid(paramValue);
}
else
p.Value=DBNull.Value;
}
else
p.Value=param.ParameterValue;
cmd.Parameters.Add(p);
}
}
}
相关文章
- 微软日语输入法使用方法「建议收藏」
- 沟通的方法:反向叙述
- 计算机中位数求和方法总结例题,众数与中位数典型例题「建议收藏」
- 使用可视化工具和统计方法检测异常值
- spring异常:No runnable methods 解决方法
- C语言联合体(共用体)使用方法及大小计算
- 主从异常:MySQL 主从复制数据不一致的异常解决方法
- Java ConcurrentModificationException异常原因和解决方法详解编程语言
- java通过Throwable的printStackTrace方法将异常信息保存到字符串中详解编程语言
- JSP PageContext.getException()方法:获取当前的异常对象
- Linux下排查进程异常的方法(linux查看进程异常)
- Mac 下重启MySQL数据库的方法(mac重启mysql)
- 解决Emerald在ubuntu 11.04中导致系统崩溃的方法
- 处理Linux下进程异常处理方法研究(linux进程异常)
- 快速掌握Linux系统上网设置方法(linux怎么设置上网)
- Linux下更改文件权限的方法——chomd(linuxchomd)
- 1452问题MySQL报错的解决方法(1452mysql)
- 解决Redis链接超时异常的有效方法(redis 链接超时异常)
- php读取mysql数据库三种方法
- ASP.NET生成eurl.axdHttp异常错误的处理方法
- Web开发异常行为排查常用方法图文介绍
- windows7服务器上weblogic启动失败异常解决方法
- android多点触摸图片缩放的具体实现方法
- js防止表单重复提交的两种方法
- JQuery中使用Ajax赋值给全局变量异常的解决方法