如何在 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# 数据表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 在 access 数据库中实现“右外连接”查询?