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