当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在C#中的SQLiteDB中插入和查询DateTime对象?》经验,为你挑选了1个好方法。

考虑这段代码:

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  WHERE DATES = "YYYY-MM-DD"

什么都不返回,而用'>'或'<'替换'='会返回正确的结果.

所以我的观点是:

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

如果我存储它的方式有问题(即非1806兼容),那么我该如何使其兼容



1> Guffa..:

如果将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  WHERE DATES = @Date";
Command.Parameters.Add("@Date", theDate);

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有