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语句里 这样数据库里的值就为空了。。。
在数据库中的某个字段类型为 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语句里 这样数据库里的值就为空了。。。
相关文章推荐
- C#中解决插入数据库的某个字段类型为datetime 去掉默认值1900-01-01
- C#中解决插入数据库的某个字段类型为datetime 为空
- C#中解决插入数据库的某个字段类型为datetime 为空
- C#中解决插入数据库的某个字段类型为datetime 为空
- C#中解决插入数据库的某个字段类型为datetime 为空
- sql2005 若字段定义的类型为datetime,插入为''(空),那么会默认值为1900-01-01 00:00:00.000
- sql2005 若字段定义的类型为datetime,插入为''(空),那么会默认值为1900-01-01 00:00:00.000
- 向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))
- mysql 数据库字段为datetime类型时默认值为:0000-00-00 00:00:00 查询时异常 java.sql.SQLException:Value '0000-00-00' can not be represented as java.sq
- C# 插入数据库datetime类型问题
- 向ACCESS中的"时间/日期"字段中插入DateTime.Now时出现“标准表达式中数据类型不匹配。”错误的解决办法
- c#向数据库中插入xml数据类型的字段
- 请教:数据库字段类型为datatime,请问在.net里怎样转换为datetime类型来插入数据库?
- 向ACCESS中的"时间/日期"字段中插入DateTime.Now时出现“标准表达式中数据类型不匹配。”错误的解决办法
- hibernate映射数据库表如何在不插入值的情况下使表中字段默认值生效
- DateTime类型,插入或更改为空字符串,则会变成1900-01-01
- C# 用数据库读取Excel出现“定义了过多字段”错误的解决方法 .
- 数据库中的字段类型对应C#的变量类型
- 数据库中存储日期的字段类型到底应该用varchar还是datetime
- mysql——时间字段类型与C#中datetime