C#中日期型参数为空的处理方法 DataSet 空
2006-09-27 17:30
204 查看
最近在一个Asp.Net项目中,对数据处理采用的方式如下:查询数据/绑定DataGrid用DataSet或DataReader,对于数据的新增/修改/删除,则使用实体类+SQL语句+参数的处理方式。
但在处理过程中,遇到一个棘手的问题是如何处理日期型参数。原因如下:如果在实体类中与数据表日期字段相对应的属性定义为DateTime,那么,对于在数据维护中,无法做到对应的数据字段日期为空,相反会是数据库中日期的最小值。(在我使用的Oracle数据库中,是"1899-12-31")。具体原因是C#实体类中,DateTime类型的属性有默认值是"1-1-1",所以在该类初始化时该属性已有值,所以就算在数据维护中,没有对该属性做任何改动,该属性也不是我们所希望的Null值,而是"1-1-1",对应的数据表中也就是最小的日期值"1899-12-31"。
正确的解决方法是:在实体类中,不定义DateTime类型的属性,用string类型代替。但在对DbParameter进行赋值时进行相关的判断:
if((Cargo.Customer_Date != "") && (Cargo.Customer_Date != null))
{
odp[8] = GetOleDbParamter("CUSTOMER_DATE",OleDbType.Date,Cargo.Customer_Date);
}
else
{
odp[8] = GetOleDbParamter("CUSTOMER_DATE",OleDbType.Date,System.DBNull.Value);
}
其中:GetOleDbParamter函数如下
//创建OleDbParameter
#region
public static OleDbParameter GetOleDbParamter(string paramName,OleDbType dbType,object paramValue)
{
OleDbParameter param = new OleDbParameter(paramName,dbType);
param.Value = paramValue;
return param;
}
#endregion
但在处理过程中,遇到一个棘手的问题是如何处理日期型参数。原因如下:如果在实体类中与数据表日期字段相对应的属性定义为DateTime,那么,对于在数据维护中,无法做到对应的数据字段日期为空,相反会是数据库中日期的最小值。(在我使用的Oracle数据库中,是"1899-12-31")。具体原因是C#实体类中,DateTime类型的属性有默认值是"1-1-1",所以在该类初始化时该属性已有值,所以就算在数据维护中,没有对该属性做任何改动,该属性也不是我们所希望的Null值,而是"1-1-1",对应的数据表中也就是最小的日期值"1899-12-31"。
正确的解决方法是:在实体类中,不定义DateTime类型的属性,用string类型代替。但在对DbParameter进行赋值时进行相关的判断:
if((Cargo.Customer_Date != "") && (Cargo.Customer_Date != null))
{
odp[8] = GetOleDbParamter("CUSTOMER_DATE",OleDbType.Date,Cargo.Customer_Date);
}
else
{
odp[8] = GetOleDbParamter("CUSTOMER_DATE",OleDbType.Date,System.DBNull.Value);
}
其中:GetOleDbParamter函数如下
//创建OleDbParameter
#region
public static OleDbParameter GetOleDbParamter(string paramName,OleDbType dbType,object paramValue)
{
OleDbParameter param = new OleDbParameter(paramName,dbType);
param.Value = paramValue;
return param;
}
#endregion
相关文章推荐
- C# 一般处理程序后台传来参数作为方法Act
- 第九节 C# 可选参数、重构—提起方法、局部变量、作用域、常用字符串的处理方法
- C# 使用DataSet+dataAdapter操作后台数据库之事务处理方法1,欢迎拍砖
- C#中引用类型做方法参数时,加ref或out,与不加ref或out到底有什么区别?
- C# 参考之方法参数关键字:params、ref及out
- C#图像处理之图像平移的方法
- C#图像处理之图像目标质心检测的方法
- C#通过反射调用泛型参数方法介绍
- c#中邮件收发处理(POP3,IMAP,SMTP)的实现方法
- C#解决串口通信中接收数据时延迟处理与缓存处理的方法
- C#在处理多线程更新到UI控件的多种方法
- C#日期格式化的几种处理方法
- struts2的set get方法工作原理 在处理参数上的机制
- 【技术】C#入门:深度解析方法参数的关键字ref
- mybatis会对多参数方法进行特殊处理
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法
- C# Windows Api的一些方法 封装 以及 常用参数 .
- C#有关时间处理的一些方法,两个日期间相差的天、小时、分钟、月数等
- iOS中与Java中的方法参数不固定时在方法体内处理这些参数的方式对比
- JAVA 中URL中文参数乱码的处理方法