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);
}