您的位置:首页 > 数据库

C#中解决插入数据库的某个字段类型为datetime 去掉默认值1900-01-01

2008-12-05 14:45 543 查看
在我的一个程序里遇到这样一个问题?

在数据库中的某个字段类型为 datetime

页面上对应该字段的为一个text文本输入框,意思是输入时间。

string strId =txtId.Text.Trim();

string strName=txtName.Text.Trim();

string strPwd=txtPwd.Text.Trim();

string strExpiry=txtTime.Text.Trim(); //时间

System.Data.SqlClient.SqlParameter []parmCustomers = new SqlParameter[3];

parmCustomers[0] = new SqlParameter( "@C_Id", strId );

parmCustomers[1] = new SqlParameter( "@Name", strName );

parmCustomers[2] = new SqlParameter( "@Pwd", strPwd );

parmCustomers[3] = new SqlParameter("@Date",strExpiry);//如果现文本里没有输入时间

SqlServerDatabase obj = new SqlServerDatabase();

if ( obj.RunProc( "proc_AddUser", parmCustomers ) == 1 ) // 添加成功

{

Response.Write("<script type='text/javascript'>alert('Add Success!')</script>");

}

上段程序当然可以添加成功,

问题是当txtTime.Text什么都没输入的时候,数据库中的这个字段仍然会存储 1900-01-01 00:00:00.000

于是我就在parmCustomers[3] = new SqlParameter("@Date", " " )写入空字符串 或是 null ,可问题插入后数据库里还是显示1900-01-01

以下是解决办法:

于是加了判断: //注 数据库里时间字段要设置永许为空

string strExpiry=this.txtTime.Text.Trim();

System.Data.SqlClient.SqlParameter []parmCustomers = new SqlParameter[3];

parmCustomers[0] = new SqlParameter( "@C_Id", strId );

parmCustomers[1] = new SqlParameter( "@Name", strName );

parmCustomers[2] = new SqlParameter( "@Pwd", strPwd );

if(strExpiry.ToString()=="")

{

parmCustomers[3] = new SqlParameter("@Date",DBNull.Value);//如果文本框的时间为空的话就吧 strExpiry 改为 DBNull.Value 就OK了

}

else

{

parmCustomers[3] = new SqlParameter("@Date",strExpiry);//有值时

}

SqlServerDatabase obj = new SqlServerDatabase();

if ( obj.RunProc( "proc_AddUser", parmCustomers ) == 1 ) // 添加成功

{

Response.Write("<script type='text/javascript'>alert('Add Success!')</script>");

}

如果是Sql语句直接插入的话 

insert into AddUser (name,pwd)values('test','123')

date字段 就不要写入到插入的Sql语句里 这样数据库里的值就为空了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐