Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net DSN到连接字符串?_Asp.net_Odbc_Connection String_Dsn - Fatal编程技术网

Asp.net DSN到连接字符串?

Asp.net DSN到连接字符串?,asp.net,odbc,connection-string,dsn,Asp.net,Odbc,Connection String,Dsn,我们有一个ASP.NET网站,它使用一个我们希望能够使用connectionstring访问的数据库。我们已经成功地设置了一个DSN来连接到这个DB,但是我似乎无法发现连接字符串的正确魔力 是否有一种直接的方法将DSN中的值转换为connectionstring?我知道,从UI上看,没有一个明显的答案……每个db供应商都提供了一个不同的UI,用于根据他们的需要创建DSN。然而,我希望在UI下面,它可能只是在幕后创建一个连接字符串,我可以看看它,看看我做错了什么。有希望吗?如果是的话,有没有关于如

我们有一个ASP.NET网站,它使用一个我们希望能够使用connectionstring访问的数据库。我们已经成功地设置了一个DSN来连接到这个DB,但是我似乎无法发现连接字符串的正确魔力

是否有一种直接的方法将DSN中的值转换为connectionstring?我知道,从UI上看,没有一个明显的答案……每个db供应商都提供了一个不同的UI,用于根据他们的需要创建DSN。然而,我希望在UI下面,它可能只是在幕后创建一个连接字符串,我可以看看它,看看我做错了什么。有希望吗?如果是的话,有没有关于如何获得我需要的信息的建议

(我已经访问了connectionstrings.com,试图确保我的连接字符串的格式正确,但似乎没有任何效果……这就是为什么我尝试从dsn tact进行这种奇怪的翻译。)


编辑:我肯定不清楚的是,我们不希望有DSN条目。我们已经创建了一个,并且暂时使用了它,但是我们希望能够摆脱它,使用一个连接字符串,而不使用dsn。

如果您创建了一个dsn,那么dsn就是连接字符串

您只需使用
DSN=
并将其传递给OdbcConnection对象

例如,使用C#:


或者,可以使用该类并设置其
DSN
属性。

如果可以使用OLEDB,则可以创建一个。只需创建一个新的文本文档,
test.udl
并双击。填写对话框,然后用记事本将其打开。瞧,这是你的连接字符串

ODBC有点难-您可以从ODBC管理员创建文件DSN,也可以在系统DSN的
HKLM\Software\ODBC\ODBC.INI\
中浏览注册表。您将得到一些名称/值对。您应该能够将它们转换为连接字符串。
\\Driver
将列出实际的DLL,因此您需要从
HKLM\Software\ODBC\ODBC数据源\\
获取提供程序名称


如果您可以使用ODBC的OLEDB提供程序,那么您可以使用UDL技巧,让它也从ODBC文件DSN构建连接字符串。ODBC连接字符串将位于UDL的扩展属性中。

要扩展Mark Brackett关于注册表的回答:对于64位Windows上的32位ODBC,注册表路径为HKLM\Software\Wow6432Node\ODBC\ODBC.INI\

,在我的情况下,它足以:

  • 卸下收割台
  • 用分号替换所有新行
  • 使用大括号作为组分隔符
这是我的DSN文件,由ODBC数据源管理员创建(第三个选项卡文件DSN)

下面是我的连接字符串的外观:

DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=MyUserName;PORT=3306;DATABASE=mydatabasename;SERVER=localhost

不…我的观点是,我们希望避免使用DSN,而使用没有DSN的连接字符串。不过,这对我很有用。谢谢,啊!文件DSN!好主意!这正是我想要的。(我想我可以从注册表中提取信息,但不确定在哪里查找,但文件DSN更简单!)遗憾的是,它没有解决问题……它只是验证了所有属性都匹配。现在我猜这可能是某种权限问题…设置DSN可能与尝试直接从ASP.NET连接具有不同的权限…遗憾的是,这不是我的专业领域。唉。
[ODBC]
DRIVER=MySQL ODBC 5.3 ANSI Driver
UID=MyUserName
PORT=3306
DATABASE=mydatabasename
SERVER=localhost
DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=MyUserName;PORT=3306;DATABASE=mydatabasename;SERVER=localhost