【问题标题】:Insert date in to database from dd/MM/yyyy formatted string从 dd/MM/yyyy 格式的字符串将日期插入数据库
【发布时间】:2019-09-20 20:30:03
【问题描述】:

在 Windows 窗体中,我有 DateTimePicker 和自定义格式 dd/MM/yyyy

我想将所选日期插入SQL Local DB,但它会引发异常。

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

我的问题是:
如何以任何格式将此日期插入数据库。

这是我的代码

string query = "Insert into myTable Values('" +  dateTimePicker1.Text + "');";

【问题讨论】:

  • SQL Injection alert - 您应该将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看 Little Bobby Tables
  • 您应该学习如何使用参数化查询。使用这种方法,您传递的日期不是受全球化约定约束的日期的字符串表示
  • 数据库不关心格式。您只需存储日期。将日期呈现给用户时进行格式化。

标签: c# winforms datetime


【解决方案1】:

使用DateTimePicker.Value 而不是DateTimePicker.Text。如果你只想要日期部分,你可以使用DateTimePicker.Value.Date

DateTimePicker.Value 是分配给控件的实际DateTime 对象,而DateTimePicker.Text 是应用格式的Value 属性。直接使用Value 可以让您不必先将Text 转换为DateTime

正如其他人所指出的,您还应该使用参数化查询。

string query = "Insert into myTable Values (@myDate)";
using(SqlConnection connection = new SqlConnection(connectionString))
{
    using(SqlCommand command = new SqlCommand(query, connection))
    {
        command.Parameters.AddWithValue("myDate", dateTimePicker1.Value);       
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多