【问题标题】:ODBC Error - Data source name not found and no default driver specifiedODBC 错误 - 未找到数据源名称且未指定默认驱动程序
【发布时间】:2016-07-08 00:53:29
【问题描述】:

我有一个应用程序应该让用户在MySQL 或MS SQL 连接之间进行选择。

我这样设置连接字符串:

OdbcConnection SqlConn = new OdbcConnection();

connString = String.Format("Driver={{{0}}}; Server={1}; Port={2}; DataBase={3}; Uid={4}; Pwd={5};", protocol, hostname, port, database, user, password);
SqlConn.ConnectionString = connString;

但是,当尝试open 连接时,我收到以下错误:

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

现在,我测试了一个 MySQLConnection,并取了我们的连接字符串的Driver 部分,一切正常。我确定这与Driver 有关,但我不确定是什么。我看到的大多数示例都使用Driver={MySQL},但这对我不起作用。

注意:不确定是否重要,但用户将选择一个单选按钮来确定是使用 MySQL 还是 MS SQL。

【问题讨论】:

  • 你能创建一个测试成功的 DSN 到 SQL Server 吗?如果是这样,只需构建一个有效的连接字符串即可。
  • 以前从未使用过 DSN。不是 SQL 方面的专家,但我也可以使用相同的基本设置连接到 SQL Server。我只是想避免每次连接到数据库切换连接字符串时使用一堆 if 语句。
  • 我打开了 ODBC 数据源管理器并拥有 MySQL ODBC 5.3 ANSI 和 Unicode 驱动程序以及 SQL Native Client、SQL Server 和 SQL Server Native Client 10.0/11.0。
  • 老实说,您应该将连接字符串存储在您的应用配置中,然后您可以向用户展示来自 cfg 的可能连接。这样,每个服务器/类型的连接字符串格式是否略有不同都没关系。见这里:msdn.microsoft.com/en-us/library/ms254494.aspx
  • 如果您计划支持一种以上的数据库类型,请不要编写任何特定于数据库的代码。我从未使用过 MySqlDataReader(你也不必使用!)。 stackoverflow.com/questions/3080601/…

标签: c# mysql sql-server odbc


【解决方案1】:

正确的连接字符串取决于所使用的驱动程序。 This site 拥有完整的连接字符串库,适用于不同的数据库、连接方法和驱动程序版本。

【讨论】:

    猜你喜欢
    • 2011-11-24
    • 2011-06-02
    • 2018-07-10
    • 2011-07-30
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多