繁体   English   中英

使用ODBC连接时如何在MS Access或SQL Server中使用日期数据类型

[英]How to use date data type in either MS Access or SQL Server when using ODBC connection

我有一个C#程序,它使用DSN(ODBC驱动程序)连接到数据库。

我在程序中运行的所有查询都使用SQL。 一切都很好,但是在查询中(在SELECT语句或WHERE子句中)使用日期时间数据类型时。

当DSN是MS ACCESS数据库时,我必须使用如下所示的内容:

WHERE SomeDate = #1/1/2005#

但是,如果同一数据库位于SQL Server中,则应使用如下所示的内容:

WHERE SomeDate = '1/1/2005' 

有没有一种方法可以在同一程序中进行管理,而无需为SQL Server和MS ACCESS编写例程?

我尝试通过获取OdbcConnection对象的属性来进行尝试,但是找不到找到驱动程序是MS Access还是SQL Server的方法。

您可能在SQL Server中使用了数据类型Datetime2 如果使用本机SQL Server ODBC驱动程序,则将其作为文本读取。

所以:

  1. 将Microsoft®ODBC驱动程序11用于SQLServer®-或更高版本,当前为17:

用于SQLServer®的Microsoft®ODBC驱动程序17

  1. 将字段的数据类型更改为DateTime

您可以将Access数据库设置为ANSI-92模式。 这将允许您查询带单引号的日期字段。

尽管这是一个现有数据库,或者有其他应用程序在使用它,但请注意。 这可能会对数据库中不符合ANSI标准的任何现有查询带来重大更改。 同样,如果还有其他使用此数据库的应用程序,其查询也可能会中断。

另外,请注意, OdbcConnection确实具有一个Driver属性,您可以对其进行探测以确定数据源。 在我的计算机上,指向SQL Server数据库的DSN返回sqlncli11.dll ,因为我使用的是SQL Server Native Client 11.0。 您可以使用此属性来驱动应用程序中查询的语法。 您可以创建一个数据访问层,将其中的某些部分与其余的代码抽象化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM