使用在Windows上配置的DSN连接ODBC(无用户名和密码)

时间:2015-05-20 07:49:31

标签: c# .net

我需要在C#中开发Windows窗体应用程序以连接ODBC,选择表及其列,最后获取它们的数据。

我的确需要显示系统上可用的DSN列表,并在选择后显示其数据库,然后显示其列中的表列表。此后,我需要使用本地db列映射所有这些列,并定期获取数据。

当我开始编程时(参见下面的代码),我看到在创建ODBC连接时它询问我需要连接的数据库的用户名和密码(配置了DSN),即使我已经在设置DSN时提供了这些凭据控制面板。

OdbcConnection conn = new OdbcConnection("Dsn=MyDSN;Uid=***;Pwd=****;");
string query = "";
OdbcCommand cmd = new OdbcCommand(query, conn);
conn.Open();

我需要你的帮助来确认它是否正确,或者还有其他一些方法来直接通过DSN连接数据库而不使用用户名和密码,因为我的客户说我为什么要在窗口应用程序中提供凭证,即使我已经提供了DSN配置。

3 个答案:

答案 0 :(得分:1)

我认为您在DSN配置向导中提供的凭据仅用于获取数据库列表。

DSN Configuration wizard - Connect to SQL Server

  

为什么我应该在窗口应用程序中提供凭证,即使我已经提供了DSN配置

没有必要在DSN配置中提供凭据。

此外,您可能希望在服务器上创建一些服务(代理),可以将其配置为使用特定凭据。

答案 1 :(得分:0)

http://www.c-sharpcorner.com/UploadFile/8ef97c/odbc-dsn-using-in-Asp-Net/

在ASP.Net中使用ODBC DSN的一步一步的文章。

我已按照此进行测试。它工作正常 -

我的代码从db -

中提取客户列表
OdbcDataAdapter da = new OdbcDataAdapter(
    "SELECT * FROM [SH_Customer]",
     ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();

和我在web config中的连接字符串 -

<add name="ConnectionString" connectionString="Dsn=NayansUserDsn" providerName="System.Data.Odbc" />

答案 2 :(得分:0)

如果您事先知道您的连接是安全的,您可以通过在配置文件中添加属性/值“Trusted_Connection = Yes”,让您的程序在Windows中使用存储的DNS凭据(如果之前已配置)标签:

<connectionStrings>
<add name="myConString" connectionString="Dsn=myDsnName;Trusted_Connection=Yes" providerName="System.Data.Odbc">
</connectionStrings>

问候。