新彩天欢迎您!
幻海优品

Dapper Oracle数据库 插入(INSERT)数据时参数指定为null的方法

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

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除