-2

我正在开发一个 C# 应用程序,并且我date在 SQL Server 中有一个专栏。

我正在执行基于日期的查询,使用DateTimePicker. 我已将日期时间选择器的格式更改为短格式,现在它将日期显示为mm-dd-yyyy

现在在执行时,我从日期 1-12 得到正确的输出,但是一旦我选择 13 日期,我就会得到错误

从字符串转换日期/时间时转换失败

我不知道发生了什么!

4

1 回答 1

4

我怀疑您正在使用其中的格式化字符串DateTimePicker通过格式字符串或连接动态构建 SQL 查询。

不要那样做。

SQL 中的日期/时间字符串文字倾向于使用一种健全的格式(即 ISO 8601),其中各部分的顺序不同。实际上,当您将一块从 12 更改为 13 时它会爆炸的事实应该放弃它。

SqlCommand参数(您可以在查询中插入@foo. 使用这些参数将确保所有内容都以正确的方式传递并正确引用:

using (SqlCommand c = connection.CreateCommand()) {
    c.CommandText = "Select roll_number,name from Attendance_table where date=@date";
    c.Parameters.AddWithValue("date", dateTimePicker1.Value);
    using (var r = c.ExecuteReader()) {
        ...
    }
}

(大致 - 你应该查阅文档以了解正确的用法,我写这些东西已经有一段时间了)

于 2013-03-13T12:57:26.937 回答