我只是想知道是否有一个很好的实现(在C#/ ASP.NET中)如何同时从我的不同数据库访问我的记录。我有这个简单的应用程序,假设搜索这些数据库,然后,如果匹配某个关键字,则显示记录。
我总共喜欢5个数据库(目前正在使用MySQL),将来会扩展它(可能会改为SQL Server)。我完全了解如何搜索单个数据库,而我还在学习如何在多个数据库中进行搜索。
任何提示,意见或建议?
答案 0 :(得分:1)
拥有多个XXXConnection实例(MysqlConnection或其他),并迭代它们。
答案 1 :(得分:1)
您将使用与使用不同连接字符串针对每个其他数据库搜索单个数据库相同的方法。对于.NET 4.0中的并行扩展或前一段时间推出的3.5版本的库,这将是一个很好的选择。如果结果集有些相同,我还会研究使用DataTable.Merge方法。
答案 2 :(得分:1)
我不能说MySQL,但在SQL服务器中,您可以从多个数据库中进行选择(只要您连接的用户具有正确的权限)。如果所有数据库中的表都相似,那么您可以通过将结果UNIONING一起在一个查询中执行此操作。所以,如果您有3个数据库(称为DB1
,DB2
和DB3
)并且每个数据库都有一个名为Records
的表,那么您可以这样做:
SELECT * FROM DB1.dbo.Records WHERE Name Like '%searchterm%'
UNION
SELECT * FROM DB2.dbo.Records WHERE Name Like '%searchterm%'
UNION
SELECT * FROM DB3.dbo.Records WHERE Name Like '%searchterm%'
答案 3 :(得分:1)
根据您是在应用程序的服务器端还是客户端执行查询,您可以在服务器端采用以下方式:
[Server].[Database].[Schema].[Table]
在SQL Server中,表名可能以服务器名称,数据库名称和架构名称为前缀。如果您不想使用模式名称,但需要指定同一服务器上的数据库,则可以编写以下内容:
[Database]..[Table]
如果您更希望从客户端进行搜索,则可能希望使用Enterprise Library来简化可配置的命名连接字符串及其提供的抽象。
如果您希望获得性能,可以简单地使用BackgroundWorker。再一次,这是在客户端。