我有这个问题:
我有一个小型管理程序,包括c#和DB Access 2016。 我的键盘和系统语言是意大利语。 我的DB Access是英文的
在查询中,我发送 System.DateTime.Today.ToString(&#34; dd / MM / yyyy&#34;) 日期格式,例如< / p>
string update = "UPDATE RICHIESTA_IT SET RICHIESTA_IT.stato_approvazione = YES, RICHIESTA_IT.data_approvazione = #" + System.DateTime.Today.ToString("dd/MM/yyyy") + "# WHERE(((RICHIESTA_IT.ID_RichiestaIT) = " + iD_Richiesta + "))";
MessageBox.Show(update);
//qa is my object that help me to connection,query,disconnet to DB ..
qa.runNonQuery(update);
// without parametric query
// #06/04/2016#
但在访问db中我看到了
04/06/2016
这是我读这个日期时的一个大问题。
如何解决?
我试图设置一个面具..但我没有解决......
答案 0 :(得分:3)
问题是你没有使用参数。
您试图猜测MS Access内部使用的格式并且失败了。 如果您使用#...#
日期文字,他们必须使用yyyy-MM-dd
或MM/dd/yyyy
格式(我更喜欢前者,因为它是不明确的)。这就是定义#...#
日期文字的方式。您不能在此处使用本地化(例如意大利语)格式。
要解决您的直接问题,您可以使用
... #" + System.DateTime.Today.ToString("yyyy-MM-dd") + "# ...
或
... #" + System.DateTime.Today.ToString(@"MM\/dd\/yyyy") + "# ...
但请考虑using parameterized queries。这并不难,你可以避免所有那些丑陋的日期格式/小数点/字符串转义问题。