ORA-01084: OCI 调用中的参数无效 的解决方法

oracle的数据类型如果为NCLOB,当在C#当中三层架构使用参数形式的话,如果插入空值或空字符串就会出现“ORA-01084: OCI 调用中的参数无效”的错误,之前在网上看到别人都说用“ ”(也就是空格)代替空值或者空字符串,但是我是一个纠结体,一直觉得这样不好,虽然之前有个项目也是这样做,但今天发现了一种更好的解决方法,就是用DBNULL.value。如下:

/// <summary>
        /// 增加一条数据
        /// </summary>
        public void Add(top.Model.KK model)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("insert into KK(");
            strSql.Append("ID,NAME)");
            strSql.Append(" values (");
            strSql.Append(":ID,:NAME)");
            OracleParameter[] parameters = {
                    new OracleParameter(":ID", OracleType.Number,4),
                    new OracleParameter(":NAME", OracleType.NClob,4000)};
            parameters[0].Value = model.ID;
            if (String.IsNullOrEmpty(model.NAME))
            {
                parameters[1].Value = DBNull.Value;
            }
            else
            {
                parameters[1].Value = model.NAME;
            }
            

            DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
        }

转载于:https://www.cnblogs.com/jason-chong/p/4100909.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值