C# 将记录插入MS Access时出错

C# 将记录插入MS Access时出错,c#,ms-access-2007,C#,Ms Access 2007,我的C#程序中有valMyDate,其中包含今天日期或null 我的access 2007中有日期字段-TdateOpen 我尝试如下方式插入数据库: SQL = "insert into MyCount(TdateOpen) values ('" + MyDate +"')"; 我得到了这个错误: Data type mismatch in criteria expression 有什么问题吗?因为在SQL语句中,您将日期作为字符串输入。它应该是日期/日期格式,而不是字符串。 尽量用#括起

我的C#程序中有val
MyDate
,其中包含今天日期null

我的access 2007中有日期字段-
TdateOpen

我尝试如下方式插入数据库:

SQL = "insert into MyCount(TdateOpen) values ('" + MyDate +"')";
我得到了这个错误:

Data type mismatch in criteria expression

有什么问题吗?

因为在SQL语句中,您将日期作为字符串输入。它应该是日期/日期格式,而不是字符串。
尽量用#括起来。

您需要确保日期按美国顺序(mm/dd/yyyy)或ANSI/ISO顺序,无论您使用破折号还是斜杠都不重要,最好使用ANSI/ISO


然后,正如Madhu CM所说,Access中日期的分隔符是散列(#),但是,您的日期可以为null,null不能被分隔,因此如果返回日期,您必须将分隔符添加到日期字符串中,或者使用两个sql语句,一个表示null,一个表示date。

您可以使用SQL参数,而不是将日期值动态嵌入语句中

SQL = "insert into MyCount(TdateOpen) values (?)";
var parameter = yourCommand.CreateParameter();
parameter.Value = yourDateTime;
yourCommand.Parameters.Add(parameter);

(免责声明:代码未经编译或测试,但它应该会给您一个提示)

我想知道,在C#中,如何能有一个值为null的DateTime变量。像这样我可以。。。。。公共约会时间?MyDate{get;set;}另外一个问题是null不能有分隔符。要求的不是US order或ANSI/ISO order,而是US order或明确的格式。ISO格式曾经是这样一种明确的格式。