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

  • 相关阅读:
    走向灵活软件之路——面向对象的六大原则
    StartUML破解
    非常实用的Android Studio快捷键
    Android Studio更新失败
    《Effect Java》学习笔记1———创建和销毁对象
    使用spring单元调试出错initializationError
    Spring注入的不同方式
    DNS域名解析的过程
    浏览器的缓存机制
    Http建立连接的方式
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/12611037.html
Copyright © 2011-2022 走看看