插入时插入语句时出错

时间:2013-01-18 14:00:04

标签: c#

我正在研究c#项目并使用winform。

这里的问题是查询之前有效,但现在它无法正常工作

此处todaydatedatetimePicker,设置为短日期格式 我的数据类型为smalldatetime,我得到的错误是

 The conversion of a nvarchar data type to a
     smalldatetime data type resulted in an out-of-range value.
    The statement has been terminated.

如果我有两个日期时间选择器一个用于日期,第二个用于时间,那么我该如何插入?请你指导我

3 个答案:

答案 0 :(得分:5)

AddWithValue根据您传递的值确定参数的数据类型。

在你的情况下,你传递一个字符串,因此参数作为字符串传递给数据库而不是数据库所期望的日期时间

你应该改变那一行

cmd.Parameters.AddWithValue("@today", todaydate.Value);

答案 1 :(得分:4)

您当前正在传递 text 值,这意味着其他人必须将其解析为日期。不要那样做。鉴于您有DateTimePicker,您应该使用它提供的DateTime值:

cmd.Parameters.AddWithValue("@today", todaydate.Value);

...或首先使用特定类型(SqlDbType.SmallDateTime)创建参数,然后使用todaydate.Value设置值。重要的是避免字符串转换。

只要有可能,您应该避免将值转换为文本。保持它们的“自然”形式(例如,在这种情况下为DateTime)尽可能多的时间:在输入时,解析为自然形式,如果您可以避免转换为字符串,请执行此操作!

答案 2 :(得分:0)

我认为数据库中的time7列是smalldatetime,您尝试为其分配string。我不建议。

尝试使用Add()这样的方法;

command.Parameters.Add("@today", SqlDbType.SmallDatetime);
command.Parameters["@today"].Value = todaydate.Value;

或者您也可以像这样使用AddWithValue();

cmd.Parameters.AddWithValue("@today", todaydate.Value);