Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
C# 使用windows上配置的DSN连接ODBC(无用户名和密码)_C#_.net - Fatal编程技术网

C# 使用windows上配置的DSN连接ODBC(无用户名和密码)

C# 使用windows上配置的DSN连接ODBC(无用户名和密码),c#,.net,C#,.net,我需要用C语言开发windows窗体应用程序,以便与ODBC连接,选择表及其列,最后获取它们的数据 我的确切需要是显示系统上可用的DSN列表,选择后显示其数据库,然后显示下面的表列表及其列。现在,我需要将所有这些列映射到本地db列,并定期获取数据 当我开始编程时,请参阅下面的代码,当我创建ODBC连接时,它会询问数据库的用户名和密码,我需要连接配置了DSN的数据库,即使我在控制面板中设置DSN时已经提供了这些凭据 OdbcConnection conn = new OdbcConnection(

我需要用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连接db,而不使用用户名和密码,因为我的客户说,即使我已经在DSN配置中提供了凭据,为什么我也应该在窗口应用程序中提供凭据

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

我遵循这一点并进行了测试。它工作得很好-

我的代码从数据库中提取客户列表-

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配置中的我的连接字符串-

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

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

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

无需在DSN配置中提供凭据


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

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

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

关于。

您要连接到哪种类型的数据库?Odbc连接字符串必须非常具体,具体取决于您尝试连接到的数据库。至少这是我通过odbc连接到一些非常旧的mysql数据库的经验。还有-底层驱动程序是什么?我已经编辑了你的标题。请看,如果共识是否定的,他们就不应该。@JohnSaunders感谢您的编辑,我将在将来处理同样的问题。@Mathew我们需要通用ODBC,我的客户可能使用MYSQL或MSSQL通过DSN获取数据,他们也是技术人员,所以他声称我们不应该为通过ODBC获取db表的编程请求密码。请提出建议。@Kasier根据我的理解,您使用的是windows身份验证,但如果我使用的是sql身份验证,那么我将如何执行?