gpt4 book ai didi

c# - 将 varchar 数据类型错误转换为 datetime 数据类型导致值超出范围

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:39 24 4
gpt4 key购买 nike

我正在向数据库中插入日期,但出现此错误

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

我的数据库是这样的

column   datatype
-----------------
id int
date datetime

我当前的日期格式是 DD/MM/YYYY。但它不接受。当我将格式(在系统日历中而不是在编程中进行更改)更改为 YYYY/DD/MM 时,它起作用了。

为什么上面的格式不行?

我的查询是

cmd = new SqlCommand("insert into tblnewaccount values ('" + id + "','" + dateTimePicker1.Text + "')", con);

cmd.ExecuteNonQuery();

最佳答案

Why does the above format not work?

老实说,我不在乎你也不应该。因为你在这里做的事情比使用正确的格式严重错误。

您尝试保存您的 DateTime值及其在 datetime 中的 string 表示形式键入的列。您应该始终为您的值选择正确的数据类型。

首先,不要使用 DateTimePickerText 属性,使用 Value property获取作为 DateTime 的值。你应该总是使用 parameterized queries .这种字符串连接对于 SQL Injection 是开放的攻击。

using(var con = new SqlConnection(conString))
using(var cmd = con.CreateCommand())
{
cmd.CommandText = @"insert into tblnewaccount
values (@id, @date)";
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = dateTimePicker1.Value;
con.Open();
cmd.ExecuteNonQuery();
}

关于c# - 将 varchar 数据类型错误转换为 datetime 数据类型导致值超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29861335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com