【问题标题】:How to query a c# data table in a OdbcCommand如何在 OdbcCommand 中查询 c# 数据表
【发布时间】: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 问题的答案是正确的,那么解决方案比您想象的要容易,他可以提供帮助

标签: c# sql oracle


【解决方案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 过程,然后加入它。请参阅stackoverflow.com/questions/5557318,但您不能使用 Odbc 命令,您必须使用 ODP.NET。
  • 我将此标记为答案,因为它把我推向了正确的方向。我更改了整个 sql,因此它不依赖于第一个查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多