datetimepicker确实解决了所有类型的日期相关问题,而masked textbox返回一个字符串,这就是为什么它要在C#中的参数化sql查询中创建日期时间转换问题。
在大多数情况下,由于时间消耗问题,我们不使用datetimepicker。我的意思是,如果有数千个数据输入挂起,如果我们使用datetimepicker,那么鼠标和键盘之间的指针是分开的。因此,在我的例子中,我总是使用maskedtextbox,它会产生日期转换的问题。我试着用以下方法来解决这个问题:
String sql="insertintodummy(name,date)values(@name,convert(datetime,'"+maskedTextBox1.text+"', 103)"; // for 'dd/mm/yyyy' format.
sqlcommand cmd=new sqlcommand(sql,con);
cmd.parameters.Add("@name",SqldbType.Varchar).Value= textbox1.text;
cmd.ExecuteNonQuery();
我认为在使用C#,VS-2005的参数化查询中无法使用上述日期时间转换。
上面的代码在只有日期字段必须输入的情况下很有用。如果有比这更好的方法,请建议。
下面是完美的解决方案。
string sql="insert into dummy(name,date)values(@name,@date)";
IFormateprovider Culture = new CultureInfo("fr-FR",True);
DateTime mydate=DateTime.parse(
maskedtextbox1.text,Culture,DateTimeStyles.NocurrentDateDefault
);
sqlcommand cmd=new sqlcommand(sql,con);
cmd.Parameters.Add(@name,SqlDbtypes.Varchar).Values= Textbox1.text;
cmd.Parameters.Add(@date, SqlDbtypes.Datetime).Values=mydate;
cmd.ExecuteNonQuery();