zoukankan      html  css  js  c++  java
  • 一个参数化更新语句传入类型错误问题

    今天发现了一个很怪的错误提示,经过检查,发现主要原因是因为一个字段在存储xml时过长引起的。数据库使用varchar(max)

    The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Too many parameters were provided in this RPC request. The maximum 

    sqlPara[paraindex] = new SqlParameter();
    sqlPara[paraindex].ParameterName = "@BeiZhu";
    sqlPara[paraindex].SqlDbType = SqlDbType.Varchar;
    sqlPara[paraindex].Direction = ParameterDirection.Input;
    sqlPara[paraindex].Value = p_model.TiaoJianZiDuan;
    paraindex++;

    注意红色部分,如果使用SqlDbType.Varchar,会最多只允许写入4000个中文字符而报错(注意这个时候不是报截断错误)

    如果想用

    SqlDbType.Varchar

    可以增加下面代码解决问题

    sqlPara[paraindex].Size = -1;

     另外直接使用

    SqlDbType.Text

    也可以,


    SqlDbType与DbType的转换关系
    SqlDbType => DbType
    SqlDbType.BigInt DbType.Int64
    SqlDbType.Binary DbType.Binary
    SqlDbType.Bit DbType.Boolean
    SqlDbType.Char DbType.AnsiStringFixedLength
    SqlDbType.DateTime DbType.DateTime
    SqlDbType.Decimal DbType.Decimal
    SqlDbType.Float DbType.Double
    SqlDbType.Image DbType.Binary
    SqlDbType.Int DbType.Int32
    SqlDbType.Money DbType.Currency
    SqlDbType.NChar DbType.StringFixedLength
    SqlDbType.NText DbType.String
    SqlDbType.NVarChar DbType.String
    SqlDbType.Real DbType.Single
    SqlDbType.UniqueIdentifier DbType.Guid
    SqlDbType.SmallDateTime DbType.DateTime
    SqlDbType.SmallInt DbType.Int16
    SqlDbType.SmallMoney DbType.Currency
    SqlDbType.Text DbType.AnsiString
    SqlDbType.Timestamp DbType.Binary
    SqlDbType.TinyInt DbType.Byte
    SqlDbType.VarBinary DbType.Binary
    SqlDbType.VarChar DbType.AnsiString
    SqlDbType.Variant DbType.Object
    SqlDbType.Xml DbType.Xml
    SqlDbType.Udt DbType.Object
    SqlDbType.Structured DbType.Object
    SqlDbType.Date DbType.Date
    SqlDbType.Time DbType.Time
    SqlDbType.DateTime2 DbType.DateTime2
    SqlDbType.DateTimeOffset DbType.DateTimeOffset


    DbType => SqlDbType
    DbType.AnsiString SqlDbType.VarChar
    DbType.Binary SqlDbType.VarBinary
    DbType.Byte SqlDbType.TinyInt
    DbType.Boolean SqlDbType.Bit
    DbType.Currency SqlDbType.Money
    DbType.Date SqlDbType.DateTime
    DbType.DateTime SqlDbType.DateTime
    DbType.Decimal SqlDbType.Decimal
    DbType.Double SqlDbType.Float
    DbType.Guid SqlDbType.UniqueIdentifier
    DbType.Int16 SqlDbType.SmallInt
    DbType.Int32 SqlDbType.Int
    DbType.Int64 SqlDbType.BigInt
    DbType.Object SqlDbType.Variant
    DbType.SByte (抛异常)
    DbType.Single SqlDbType.Real
    DbType.String SqlDbType.NVarChar
    DbType.Time SqlDbType.DateTime
    DbType.UInt16 (抛异常)
    DbType.UInt32 (抛异常)
    DbType.UInt64 (抛异常)
    DbType.VarNumeric (抛异常)
    DbType.AnsiStringFixedLength SqlDbType.Char
    DbType.StringFixedLen

  • 相关阅读:
    Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
    Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
    Java 集合系列02之 Collection架构
    Java 集合系列01之 总体框架
    [转载] 散列表(Hash Table) 从理论到实用(下)
    [转载] 散列表(Hash Table)从理论到实用(中)
    [转载] 散列表(Hash Table)从理论到实用(上)
    Android 之窗口小部件高级篇--App Widget 之 RemoteViews
    Android控件之GridView
    红黑树(一)之 原理和算法详细介绍
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/12611037.html
Copyright © 2011-2022 走看看