gpt4 book ai didi

c# - 如何使用 MS Ole DB 提供程序创建跨两个 foxpro 数据库的连接?

转载 作者:行者123 更新时间:2023-11-30 15:46:48 29 4
gpt4 key购买 nike

问题:

我正在使用现有的商业 MS Visual Foxpro 应用程序,需要使用 C# 应用程序直接从数据库中提取数据。不幸的是,并不是所有的表都存储在同一个数据库中,一些记录存储在按年份分割的数据库中。如何使用单个联接针对这两个数据库创建查询?

我正在使用 Microsoft 的 OLE DB Provider for Visual FoxPro 9.0 (SP2)

更多详情:

本质上,客户信息存储在一个数据库中,而客户购买历史存储在按年份分割的数据库中。因此,我正在尝试创建一个简单的查询来打印出客户及其今年最近的购买情况。

以图形形式,数据库的文件结构如下所示:

Data\
+-2009\
| +-MyDB.dbc
| +-Sales.dbf
+-2010\
| +-MyDB.dbc
| +-Sales.dbf
+-MyDB.dbc
+-Customers.dbf

目前我可以单独连接到每个数据库,并查询它们:

// This works to connect to the customer DB
string connectionPath1 = @"Provider=vfpoledb.1;Data Source=E:\Data\MyDB.dbc";
OleDbConnection conn1 = new OleDbConnection(connectionPath1);
OleDbCommand command1 = new OleDbCommand(@"SELECT * FROM Customers", conn1);
OleDbDataReader reader1 = command1.ExecuteReader();

// This works to connect to the annual sales record DB
string connectionPath2 = @"Provider=vfpoledb.1;Data Source=E:\Data\2010\MyDB.dbc";
OleDbConnection conn2 = new OleDbConnection(connectionPath2);
OleDbCommand command2 = new OleDbCommand(@"SELECT * FROM Sales", conn2);
OleDbDataReader reader2 = command2.ExecuteReader();

我不能做的是执行我的连接语句:

//How do I do this?
OleDbConnection connMagic = new OleDbConnection(connectionPath1, connectionPath2); //non-valid code
OleDbCommand commandIWant = new OleDbCommand(@"SELECT Customers.Name, Sales.Item, Sales.Date FROM Customers LEFT JOIN Sales ON (Customers.ID=Sales.CustomerID)", connMagic);
OleDbDataReader reader3 = commandIWant.ExecuteReader();

最佳答案

如果目录结构如您所指...其中不同的年份都在父共同点下,您可以通过包含相对路径直接查询所有这些...

select 
a1.Whatever,
b1.Sales1
from
Customers a1,
2009\Sales b1
where
a1.CustomerID = b1.CustomerID
union all
select
a1.Whatever,
b1.Sales1
from
Customers a1,
2010\Sales b1
where
a1.CustomerID = b1.CustomerID
union ...

您甚至不必限定实际的 DBC,OleDB 应该会自动检测到它,但包含它不会像您的原始样本所示那样受到伤害...

关于c# - 如何使用 MS Ole DB 提供程序创建跨两个 foxpro 数据库的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4107067/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com