读书人

利用DateTimePicker的Value插入SQLSer

发布时间: 2012-06-01 16:46:36 作者: rapoo

利用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机制里的。

读书人网 >C#

热点推荐