国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于SubSonic3.0插件更新字符串過長引發的System.Data.SqlClient.SqlException的異常修復

2019-11-17 01:28:16
字體:
來源:轉載
供稿:網友

關于SubSonic3.0插件更新字符串過長引發的System.Data.SqlClient.SqlException的異常修復

  最近公司客服提交了個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://m.survivalescaperooms.com/EmptyFS/                     * 修改時間:2014-04-09                     * 修改說明:修改提交的字符串長度過長產生的Bug                     * 異常信息:System.Data.SqlClient.SqlException (0x80131904): 傳入的表格格式數據流(TDS)遠程過程調用(RPC)協議流不正確。                     *           參數 4 ("@up_xxx"): 數據類型 0xA7 的數據長度或元數據長度無效。                     *********************************************/                    if (param.DataType.ToString() == "AnsiString")                    {                        p.Size = -1;                    }                    //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://m.survivalescaperooms.com/EmptyFS/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雅江县| 青岛市| 改则县| 中超| 华池县| 永靖县| 土默特左旗| 赞皇县| 通江县| 塔城市| 洛阳市| 璧山县| 青川县| 资源县| 深圳市| 鄂托克旗| 湘潭市| 竹溪县| 镶黄旗| 水富县| 玉环县| 同德县| 横峰县| 永顺县| 西吉县| 垣曲县| 江西省| 佳木斯市| 色达县| 师宗县| 庆阳市| 朝阳区| 门头沟区| 榆社县| 泽普县| 合山市| 榆林市| 肥东县| 南汇区| 湖北省| 河源市|