日期:2014-05-18  浏览次数:20870 次

利用DateTimePicker的Value插入SQLServer的一点小疑惑
最近在用winform做一个系统,但是我遇到了一件比较奇怪的事情。我的代码如下:
C# code


insertToTable(taskCode, taskStart.Value, taskEnd.Value);

public void insertToTable(string taskNO, DateTime startTime, DateTime endTime)
{
    commandToSQL("INSERT INTO db_task (taskCode, startTime, endTime) VALUES ('" + taskNO + "', '" + startTime + "', '" + endTime + "'")");
}


  其中SQLServer中startTime和endTime均为smalldatetime类型,两个DateTimePicker都为CustomFormat都为"yyyy-MM-dd HH:mm:ss"

  现在的问题是,我用笔记本上的XP系统开发时,插入没有任何问题,而用家里的台式机Win7开发时,总是提示插入失败,经过单步调试,发现在XP中,传入的startTime和endTime的值为"2012-5-31 11:12:46"这种类型,而Win7中,传入的则为"2012-5-31 星期四 11:12:46",那么显然肯定不能插入,但是我不知道发生这种情况的原因是什么。

  昨天试了一晚上,发现另一个问题,如果把两个DateTime换成string,而DateTimePicker的Visible设为false,则插入SQL的startTime.Text和endTime.Text都为空,也就是SQL中默认的"1900-01-01 00:00:00"的格式。。。这个也不清楚到底是为什么。

  以上两个问题,特来此赐教,不胜感激。

------解决方案--------------------
不管 DateTimePicker 里的格式是什么,insertToTable 方法里的参数只是 DateTime 类型的,与 DateTimePicker 已经无关了,而是和系统设置有关了,为了要统一,在 insertToTable 里你要加上把 DateTime 转字符串的方法,一般 DateTime实例.ToString("yyyy-MM-dd HH:mm:ss")
------解决方案--------------------
第二个问题 应该是datetime类型的默认值,.net机制里的。