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

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

ADO.NET中帶參數的Sql語句的陷阱

2019-11-14 16:15:05
字體:
來源:轉載
供稿:網友

1.使用Parameter

//利用構造函數方式 ,不推薦這樣寫Parameter  p =new Parameter("@id",值);cmd.Parameters.Add(p);//利用對象初始化器的方式,推薦是這樣寫Parameter p =new Parameter(){ParameterName="@id",Value=""};cmd.Parameters.Add(p);

//推薦和不推薦為了什么?在下面說

2.使用Parameter數組

//不推薦的寫法Parameter[] pms =new Parameter[];{       new Parameter("@id",值);       ......};cmd.Parameter.AddRange(pms); //推薦的寫法   SqlParameter[] pms= {     new SqlParameter("@id", SqlDbType.VarChar,50),      .......      } ;   parameters[0].Value = "";  cmd.Parameter.AddRange(pms);

//推薦和不推薦是因為什么?在下面說

3.Parameter("@id",值)的陷阱

如上1和2中所說,不推薦Parameter("@id",值)的使用方式。為什么呢?

原因是有一次這樣寫。

new SqlParameter("@aa",0);  發現竟然奇怪的調用了 紅色圈中的構造函數。

結果就是數據庫中原本賦過值的項,變成了null。

clipboard[6]

為什么0會被編譯器看成MySQLDbType類型呢?

原因是,MySqlDbType是一個枚舉。0正好對應了Decimal類型。

clipboard[7]

 

所以為了避免這種情況,

推薦使用對象初始化器,

或者直接使用帶DbType的構造函數實例化,然后再賦值。

總之,直接用構造函數的方式有點略坑~
 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪洞县| 台北市| 武宣县| 宜章县| 永济市| 开封县| 合阳县| 林甸县| 大悟县| 广东省| 巨野县| 荆州市| 兴宁市| 胶南市| 台州市| 穆棱市| 鹤庆县| 七台河市| 时尚| 扎囊县| 定襄县| 雷州市| 琼结县| 大厂| 舒城县| 壤塘县| 高雄市| 陵川县| 佳木斯市| 韶关市| 马鞍山市| 莱芜市| 金山区| 上杭县| 宁乡县| 舞钢市| 博客| 临颍县| 沙河市| 盐源县| 合作市|