我需要在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配置。
答案 0 :(得分:1)
我认为您在DSN配置向导中提供的凭据仅用于获取数据库列表。
为什么我应该在窗口应用程序中提供凭证,即使我已经提供了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>
问候。