gpt4 book ai didi

c# - 如何从 C# 在 SQLite DB 中插入和查询 DateTime 对象?

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:13 25 4
gpt4 key购买 nike

考虑这段代码:

string sDate = string.Format("{0:u}", this.Date);

Conn.Open();
Command.CommandText = "INSERT INTO TRADES VALUES(" + "\"" + this.Date + "\"" + "," +this.ATR + "," + "\"" + this.BIAS + "\"" + ")";
Command.ExecuteNonQuery();

注意命令的“this.Date”部分。现在 Date 是 C# 环境的 DateTime 类型的对象,DB 不存储它(在 SQLite 论坛的某个地方,写的是 ADO.NET 包装器自动将 DateTime 类型转换为 ISO1806 格式)

但是当我使用 sDate(显示在第一行)而不是 this.Date 时,它​​会正确存储。

我的问题实际上并没有就此结束。即使我使用“sDate”,我也必须通过查询来检索它。而这就是问题所在

任何这种格式的查询

SELECT * FROM <Table_Name> WHERE DATES = "YYYY-MM-DD"

不返回任何内容,而将“=”替换为“>”或“<”会返回正确的结果。

所以我的观点是:

如何从 SQLite 数据库查询日期变量。

如果我的存储方式有问题(即不符合 1806 标准),那么我该如何使其符合标准

最佳答案

如果将 DateTime 值转换为字符串并将其放入查询中,则 ADO.NET 包装器无法将 DateTime 值转换为 ISO 8601(不是 1806)。您需要为此使用参数:

Command.CommandText = "INSERT INTO TRADES VALUES (@Date, @Atr, @Bias)";
Command.Parameters.Add("@Date", this.Date);
Command.Parameters.Add("@Atr", this.ATR);
Command.Parameters.Add("@Bias", this.BIAS);
Conn.Open();
Command.ExecuteNonQuery();

(此外,您将 DateTime 值转换为字符串并放入 sDate 变量中,但随后您仍然使用 DateTime 值生成 SQL 查询。)

获取数据时也是如此:

Command.CommandText = "SELECT * FROM <Table_Name> WHERE DATES = @Date";
Command.Parameters.Add("@Date", theDate);

关于c# - 如何从 C# 在 SQLite DB 中插入和查询 DateTime 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2459467/

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