1、错误代码情况
一般情况我们都会认为,将匿名对象的参数值直接设置为null或DBNull应该就可以了,示例代码如下,
int affecgtRow = 0; string sql = @"INSERT INTO `userrole` (`GuidMark`, `UserId`, `RoleId`, `AuthorityValue`, `AuthorityDescription`) VALUES (@GuidMark, @UserId, @RoleId, @AuthorityValue, @AuthorityDescription);"; var p=new{GuidMark=1,RoleId=1,AuthorityValue=null,AuthorityDescription=""};//匿名对象设置参数,null改成DBNull也是有问题的 using (IDbConnection conn = new OracleConnection(GlobalVariablesManager.G_Strconn)) { affecgtRow = conn.Execute(sql,p ); }
注意:会报错提示“不支持的列数据类型”错误。
2、使用C#中可空类型来设置参数值为null
int affecgtRow = 0; string sql = @"INSERT INTO `userrole` (`GuidMark`, `UserId`, `RoleId`, `AuthorityValue`, `AuthorityDescription`) VALUES (@GuidMark, @UserId, @RoleId, @AuthorityValue, @AuthorityDescription);"; var p=new{GuidMark=1,RoleId=1,AuthorityValue=(int?)null,AuthorityDescription=""};//将null强转成对应的参数类型的可空类型(Nullable<T>) using (IDbConnection conn = new OracleConnection(GlobalVariablesManager.G_Strconn)) { affecgtRow = conn.Execute(sql,p); }