如何在 OdbcCommand 中查询 c# 数据表

Posted

技术标签:

【中文标题】如何在 OdbcCommand 中查询 c# 数据表【英文标题】:How to query a c# data table in a OdbcCommand 【发布时间】:2013-09-03 13:42:43 【问题描述】:

我有两个查询。一个来自一个数据库,一个来自另一个。

第二个查询使用第一个查询的数据作为表。 (这是我需要知道的)

查询比示例更复杂,但我试图使其简单。示例如下:

DataTable dt = new DataTable();
OdbcConnection myConnection = salesConnection();
myConnection.Open();

OdbcCommand selectCMD = new OdbcCommand("SELECT CUSTOMER.CUSTOMER_NBR " +
"FROM CUSTOMER", myConnection);

OdbcDataAdapter cmd = new OdbcDataAdapter();
cmd.SelectCommand = selectCMD;

cmd.Fill(dt);
myConnection.Close();

DataTable dtM = new DataTable();
myConnection = mConnection();
myConnection.Open();

selectCMD = new OdbcCommand("SELECT '**DATA TABLE ABOVE**'.CUSTOMER_NBR " + 
                            "FROM '**HOW TO I REFERENCE THE DATA TABLE ABOVE**'",
                            myConnection);

cmd = new OdbcDataAdapter();
cmd.SelectCommand = selectCMD;

cmd.Fill(dtM);
myConnection.Close();

【问题讨论】:

第一个查询返回单个CUSTOMER_NBR 还是多个?通常,在第二个命令中使用从第一个表的行设置的参数(如果它包含多行,则可以使用 lop)。 如果您需要使用第一个查询中的数据,为什么不将其合并到您的第二个? 它返回一个客户姓名和号码的大列表(对于这个例子,一个大的数字列表)。用垂耳吗?没听说过。 huMpty duMpty,因为它们不是来自同一个数据库,它们需要两个不同的连接字符串来获取数据 我以为我删除了我的答案。哈哈。我不认为你可以做你的要求,因为 sql 不理解 .net 数据表。您必须使用数据表中的数据构建您的 sql。如果 huMpty duMpty 问题的答案是正确的,那么解决方案比您想象的要容易,他可以提供帮助 【参考方案1】:

我不认为你现在可以做你想做的事

据我所知,您需要在第二阶段将两个查询合并为一个。

您可以详细查看sp_addlinkedserver (T-SQL)

例如

Select Columns
From   TableName TB1
       Inner Join [OtherServer].[DatabaseName].[dbo].[TabeleName] Tb 
                                        ON Tb.Column=TB1.Column

更新

如果是Oracle,请参考Accessing and Modifying Information in Multiple Databases (Oracle)

【讨论】:

我们确定这是我们正在处理的 SQL 服务器吗? 我会测试你的建议。谢谢 @Luke 顺便说一句,可以将 DataTable 发送到 Oracle 过程,然后加入它。请参阅***.com/questions/5557318,但您不能使用 Odbc 命令,您必须使用 ODP.NET。 我将此标记为答案,因为它把我推向了正确的方向。我更改了整个 sql,因此它不依赖于第一个查询。

以上是关于如何在 OdbcCommand 中查询 c# 数据表的主要内容,如果未能解决你的问题,请参考以下文章

多个返回值的 ODBC 调用语法

如何在 C# 中从数据表中查询和检索信息

C# DataGridView如何显示查询数据?

如何使用 C# 在 access 数据库中实现“右外连接”查询?

如何使用 C# Firebird 对数据库执行选择查询并将其显示在 shell 中?

C#中如何在文本框中输入数据然后按回车就查询数据库将结果显示在Datagridview中?