为什么我收到“未找到数据源名称且未指定默认驱动程序”以及如何修复它?

Eri*_*k A 8 database odbc

尝试在 Windows 上制作通过 ODBC 连接到数据库的程序时,出现以下错误:

[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序。

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

为什么我收到这个错误?我该如何解决?

Eri*_*k A 22

是什么导致了这个错误?

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

这可能有 3 个常见原因:

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

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

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

如果您使用的是 64 位 Windows,则仅列出系统上安装的 64 位驱动程序。要查看安装了哪些 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;
Run Code Online (Sandbox Code Playgroud)

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

请注意,对于已部署的代码,驱动程序必须存在于运行代码的计算机/服务器上。

我没有驱动程序,或者有错误的位,我在哪里可以找到正确的?

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

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

如果未列出您要使用的驱动程序,通常可以使用 Google 轻松找到该位置。