//利用構造函數方式 ,不推薦這樣寫Parameter p =new Parameter("@id",值);cmd.Parameters.Add(p);//利用對象初始化器的方式,推薦是這樣寫Parameter p =new Parameter(){ParameterName="@id",Value="值"};cmd.Parameters.Add(p);//推薦和不推薦為了什么?在下面說
//不推薦的寫法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);//推薦和不推薦是因為什么?在下面說
如上1和2中所說,不推薦Parameter("@id",值)的使用方式。為什么呢?
原因是有一次這樣寫。
new SqlParameter("@aa",0); 發現竟然奇怪的調用了 紅色圈中的構造函數。
結果就是數據庫中原本賦過值的項,變成了null。
為什么0會被編譯器看成MySQLDbType類型呢?
原因是,MySqlDbType是一個枚舉。0正好對應了Decimal類型。
所以為了避免這種情況,
推薦使用對象初始化器,
或者直接使用帶DbType的構造函數實例化,然后再賦值。
總之,直接用構造函數的方式有點略坑~
新聞熱點
疑難解答