遇到往ORACLE数据库中插入数据时总是报ORA-01084 invalid argument in OCI call错误,经分析是因为表中的一个字段类型为CLOB,并且可为空,当在给该字段插入空值时引发的该错误。后来判断是否为空值,如果为空值使用DBNull.Value,以此解决了该问题。

Null 指的是无效的对象引用;而 DBNull 是一个类, DBNull.Value 是它唯一的实例 。DBNull 的实例 DBNull.Value是数据库表中的空数据在 .Net 代码中的表现形式。我们知道,当数据库表中的可空字段没有被赋值时,数据库表中的该字段会被指定为 Null ,那么这个 Null 值在 .Net 代码中该如何表示呢,使用的就是 DBNull .Value。反过来说,在代码中,当一个字段的值等于 DBNull .Value,那就说明这个字段在数据库中保存的值为 Null ,也就是说它在数据库中的值为空。所以, DBNull.Value 对象指向有效的对象 ,并不像Null 没有指向任何有效的对象。

DBNull 是一个单独的类,这意味着该类只能存在此实例。

如果数据库字段的数据缺失,则您可以使用 DBNull.Value 属性将 DBNull 对象值显式分配给该字段。然而,大部分数据提供程序会自动进行分配。

若要计算数据库字段以确定其值是否为 DBNull,则可以将字段值传递给 DBNull.Value.Equals 方法。但此方法不常用,因为有许多其他方式可计算数据库字段是否缺少数据。

示例

下面的示例调用 DBNull.Value.Equals 方法,来确定联系人数据库中的数据库字段是否具有有效值。如果具有有效值,字段值将被追加到在标签中输出的字符串中。

private voidOutputLabels(DataTable dt)

{stringlabel;//Iterate rows of table

foreach (DataRow row indt.Rows)

{intlabelLen;

label=String.Empty;

label+= AddFieldValue(label, row, "Title");

label+= AddFieldValue(label, row, "FirstName");

label+= AddFieldValue(label, row, "MiddleInitial");

label+= AddFieldValue(label, row, "LastName");

label+= AddFieldValue(label, row, "Suffix");

label+= "\n";

label+= AddFieldValue(label, row, "Address1");

label+= AddFieldValue(label, row, "AptNo");

label+= "\n";

labelLen=label.Length;

label+= AddFieldValue(label, row, "Address2");if (label.Length !=labelLen)

label+= "\n";

label+= AddFieldValue(label, row, "City");

label+= AddFieldValue(label, row, "State");

label+= AddFieldValue(label, row, "Zip");

Console.WriteLine(label);

Console.WriteLine();

}

}private string AddFieldValue(stringlabel, DataRow row,stringfieldName)

{if (!DBNull.Value.Equals(row[fieldName]))return (string) row[fieldName] + " ";else

returnString.Empty;

}

存clob为空的值_给Oracle数据库中CLOB字段插入空值相关推荐

  1. 存clob为空的值_将网页文本(HTML)保存到ORACLE数据库CLOB字详解

    网上常见的例子总是将文本文件上传至数据库的方法.今天在做文档管理相关系统时,需要将网页上的文本输入框(textarea或input)中的内容,上传到ORACLE数据库的CLOB字段中去.在网上找了好长 ...

  2. 易语言mysql怎么写字段值_易语言数据库怎么加字段 数据库添加字段说明

    易语言将access数据库作为数据源怎么添加记录到access? .版本 2 .支持库 eDB 数据库连接1.连接Access (取运行目录 () + "数据库名称", " ...

  3. mysql 字段必填 属性_如何判断数据库中的字段是否具有必填属性(50分)

    你试试用SQLDMO吧 提供如下供参考 Option Explicit Dim dd As SQLDMO.Database Dim ss As New SQLDMO.SQLServer Dim tt ...

  4. java oracle 建表语句_在oracle数据库中创建表语句如何写?

    表名:servicelogs 字段名称类型 idint (主键,自增) servicetypevarchar (100) outsysvarchar (100) methodnamevarchar ( ...

  5. oracle语句mysql数据库名称_查询oracle数据库中当前数据库所有表的名称

    SQL查询数据库中所有指定类型的字段名称和所在的表名 --查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 ...

  6. Oracle数据库中的方案,学习Oracle数据库_理解Oracle数据库中的方案

    理解数据库.表空间.数据文件之间的关系. 每个表空间由一个或多个数据文件组成.数据文件用于在物理上存储表空间中所有逻辑结构的数据.表空间中数据文件的大小之和就是表空间的存储容量(图中系统表空间存储容量 ...

  7. oracle数据库sga用途_关于oracle数据库中SGA详解

    1 名称 1.1 组成 SGA主要由数据高速缓冲区(Database Buffer Cache).共享池(Shared Pool).重做日志缓冲区(Redo Log Cache).大型池(Large ...

  8. sqlserver根据字段查表_查找sqlserver数据库中,查询某值所表名和字段名

    有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,通过一个存储过程实现的.只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名. 前提是要将这个存储过程放在所查询的数据库. CR ...

  9. java mysql nclob_java语言操作Oracle数据库中的CLOB数据类型 (转)

    java语言操作Oracle数据库中的CLOB数据类型 (转)[@more@] 有关字段类型的相关信息可以查阅oracle技术网.下面摘抄一些有关blob.clob等类型的说明.又便于大家的了解. 字 ...

最新文章

  1. php No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax跨域访问解决方法
  2. 宏基因组蚂蚁森林公益合种树项目,支持祖国绿化事业,让世界更美好
  3. matlab 工业相机 曝光时间_CCD高清工业相机的主要参数及应用
  4. 【牛客 - 185D】星光晚餐(数论,结论,思维,模型)
  5. one-hot与词袋模型
  6. Avro从入门到入土
  7. Linux shell脚本中如何读取跟shell脚本同一目录下的配置文件
  8. day12 生成器和各种推导式
  9. R 语言之数据分析高级方法「主成分分析」和「因子分析」
  10. Practical Node.js摘录(2018版)第1,2章。
  11. Visual Studio助手VAssistx各版本破解教程
  12. lua 常用数据类型总结
  13. V20变频器手自动切换(就地远程切换)的具体方法示例
  14. php获取当前网址附带(http://或者https//)
  15. 读书印记 - 《我们人类的基因:全人类的历史和未来》
  16. JVMTM Tool Interface:JVM源码分析之javaagent原理完全解读
  17. Excel创建指定名称的单个工作表的3种操作
  18. KMEANS均值聚类和层次聚类:亚洲国家地区生活幸福质量异同可视化分析和选择最佳聚类数...
  19. 《机器人SLAM导航核心技术与实战》前言
  20. iTop-4412_开发板Linux编程之TFTP服务器学习笔记

热门文章

  1. 将python3.7降为3.5_python3.7降至3.5【python cookbook】python访问子字符串
  2. qt log4qt 输出到oracle,Log4Qt 输出地
  3. CRC32爆破解密脚本工具(三)
  4. Python基础教程: import与from import使用
  5. Python基础教程:super()方法详解
  6. Python 直接赋值、浅拷贝和深度拷贝区别
  7. Python的time库的一些简单函数以及用法
  8. visio 程序设计流程图合符号含义
  9. pytorch torch.norm(input, p=2) → float、torch.norm(input, p, dim, out=None) → Tensor(求范数)
  10. web前端入门学习 css(9)广义的html5 品优购项目(html+css基础完结,js开始,移动端布局开始)