下面一个返回值为DateTime的函数,运行时总是报错:该字符串未被识别为有效的 DateTime。请大家帮帮忙,多谢了!!
public DateTime CarMoveDate(string vin)
{
SqlCommand cmCarMoveDate=new SqlCommand ("CarMoveDate",cn);
cmCarMoveDate.CommandType =CommandType.StoredProcedure ; SqlParameter parametervin = new SqlParameter("@vin", SqlDbType.VarChar, 50);
parametervin.Value = vin;
cmCarMoveDate.Parameters.Add(parametervin); SqlParameter parametermovedate = new SqlParameter("@movedate",SqlDbType.DateTime);
parametermovedate.Direction = ParameterDirection.Output;
cmCarMoveDate.Parameters .Add(parametermovedate); cn.Open();
cmCarMoveDate.ExecuteNonQuery();
cn.Close(); return Convert.ToDateTime(parametermovedate.Value.ToString());
}
public DateTime CarMoveDate(string vin)
{
SqlCommand cmCarMoveDate=new SqlCommand ("CarMoveDate",cn);
cmCarMoveDate.CommandType =CommandType.StoredProcedure ; SqlParameter parametervin = new SqlParameter("@vin", SqlDbType.VarChar, 50);
parametervin.Value = vin;
cmCarMoveDate.Parameters.Add(parametervin); SqlParameter parametermovedate = new SqlParameter("@movedate",SqlDbType.DateTime);
parametermovedate.Direction = ParameterDirection.Output;
cmCarMoveDate.Parameters .Add(parametermovedate); cn.Open();
cmCarMoveDate.ExecuteNonQuery();
cn.Close(); return Convert.ToDateTime(parametermovedate.Value.ToString());
}
(
@vin varchar(50),
@movedate datetime output
)AS
SELECT @movedate = movedate FROM Car_Move WHERE vin = @vin
if (@@RowCount<1)
begin ----1
set @movedate = null
end------1 RETURNGO
把
return Convert.ToDateTime(parametermovedate.Value.ToString());
改成如下
if( parametermovedate.Value == DBNull.Value )
{
//use a default date as return value, for example "1900-1-1"
}
else
return (DateTime)parametermovedate.Value;
try
{
return Convert.ToDateTime(parametermovedate.Value.ToString());
}
catch(Exception e)
{
....
}
if typeof(parametermovedate.Value).GetType() == typeof(System.DBNull)
{
//给一个默认值
}
else
{
//从数据库中取
}
当然,最好再加上try...catch