为什么我会收到 "Data source name not found and no default driver specified" 以及如何解决?

Why am I getting "Data source name not found and no default driver specified" and how do I fix it?

当试图在 Windows 上制作一个通过 ODBC 连接到数据库的程序时,我收到以下错误:

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified.

我确信我的代码是正确的。它甚至可以在不同的 PC 上运行。

为什么会出现此错误?我该如何解决?

导致此错误的原因是什么?

错误消息告诉您,简单地说,ODBC 驱动程序管理器找不到您在连接字符串或 DSN 中指定的驱动程序。

这可能有 3 个常见原因:

  1. 您尝试使用的驱动程序未安装在您的系统上
  2. 驱动程序已安装,但是它与您正在 运行ning
  3. 的代码的位数不匹配
  4. 您在键入驱动程序名称时出错

如何检查我的系统上安装了哪些驱动程序?

您可以转到 ODBC 数据源管理器来检查系统上安装的驱动程序。要打开它,请按 ⊞ Win + R,然后输入:odbcad32.exe。然后检查选项卡 Drivers 以查找已安装的驱动程序。 名称 列指示您应该在连接字符串或 DSN 中使用的确切名称。

如果您使用的是 64 位 Windows,那只会列出安装在 你的系统。要查看安装了哪些 32 位驱动程序,请按 ⊞ Win + R,然后输入:C:\Windows\SysWOW64\odbcad32.exe,然后转到驱动程序 选项卡。

驱动安装好了,可能是位数不对,怎么办?

然后,您有两个选择,要么调整您的程序运行正在安装的位数,要么安装具有不同位数的驱动程序。

Windows 上默认安装的某些驱动程序只有 32 位变体。这些不能用于 64 位程序。

您通常可以在任务管理器中识别出某个程序 运行 在哪个位数下。在 Windows 10 中,所有 32 位程序的名称都附加了 (32-bit)。如果不存在,您可能 运行 正在使用 64 位程序,大多数现代编程语言和环境 运行 默认情况下都在 64 位上,但允许您切换到 32-少量。但是,不同编程语言的细节不在这个问题的范围内。

如何确认我没有输入错误的驱动程序名称?

ODBC 连接字符串如下所示:

DRIVER={DriverName};ParameterName1=ParameterValue1;ParameterNameN=ParameterValueN;

如果驱动名称部分可能包含特殊字符,则需要用大括号分隔,并且需要与安装的驱动名称完全匹配,如在ODBC数据源管理器中找到的,包括空格和印刷字符,但不包括大写。

请注意,对于已部署的代码,驱动程序 必须 出现在 computer/server 运行 代码中。

我没有驱动,或者位数不对,请问哪里找合适的?

这取决于您要使用的驱动程序。

带有下载位置的常见驱动程序列表(所有 32 位和 64 位都相同 URL):

如果您要使用的驱动程序未列出,通常可以使用 Google.

轻松找到该位置