C# 带有日期范围问题的C和MS Access查询
我正在编写一个查询,以便在不同数据库中的两个MS Access表之间传输数据。事情的转移方面是好的。然而,我在设置“到/从日期”时遇到了实际问题 我的电脑是为英国安装的,但我相信MS-SQL查询会将查询转换为我们。你可以想象,某些日期,如2013年11月1日或2013年11月1日,会给我带来不正确的结果 我一直在尝试不同的事情,但结果却很奇怪,所以我需要一些指导,告诉大家应该怎么做。以下是当前查询的示例以及在运行期间创建的选择零件。如前所述,我使用了其他格式,不仅仅是.ToLongDateString:C# 带有日期范围问题的C和MS Access查询,c#,ms-access,C#,Ms Access,我正在编写一个查询,以便在不同数据库中的两个MS Access表之间传输数据。事情的转移方面是好的。然而,我在设置“到/从日期”时遇到了实际问题 我的电脑是为英国安装的,但我相信MS-SQL查询会将查询转换为我们。你可以想象,某些日期,如2013年11月1日或2013年11月1日,会给我带来不正确的结果 我一直在尝试不同的事情,但结果却很奇怪,所以我需要一些指导,告诉大家应该怎么做。以下是当前查询的示例以及在运行期间创建的选择零件。如前所述,我使用了其他格式,不仅仅是.ToLongDateStr
cmd.CommandText = @"INSERT INTO [Report data] IN '" + Directory.GetCurrentDirectory() + "\\Reporting.mdb" + "' SELECT tblMain.* FROM tblMain WHERE [Start Date-Time] Between #" + monthCalendar1.SelectionStart.ToLongDateString() + " 00:00:00# AND #" + monthCalendar2.SelectionStart.ToLongDateString() + " 23:59:59#;";
"SELECT tblMain.* FROM tblMain WHERE [Start Date-Time] Between #01 November 2013 00:00:00# AND #01 November 2013 23:59:59#;"
非常感谢您提供的任何帮助。使用参数化查询不仅可以保护您的代码免受SQL注入漏洞的影响,而且还可以减轻您在定界值和担心区域设置问题(即“US”和“UK”查询)时的负担。帮自己一个忙,将代码转换为类似以下内容:
cmd.CommandText =
"SELECT MemberID, DonationDate FROM MemberDonations " +
"WHERE DonationDate Between ? And ?";
cmd.Parameters.AddWithValue("?", new DateTime(2013, 1, 2));
cmd.Parameters.AddWithValue("?", new DateTime(2013, 1, 3));
请使用。。这种字符串连接对SQL注入攻击是开放的。谢谢Gord-非常感谢。