0

異なるデータベースから自分のレコードに同時にアクセスする方法について、(C#/ASP.NET で) 適切な実装があるかどうかを知りたいだけです。これらのデータベースを検索し、特定のキーワードが一致した場合にレコードを表示することを想定したこの単純なアプリケーションがあります。

全部で 5 つのデータベース (現在 MySQL を使用) があり、将来的に拡張する予定です (SQL Server に変更される可能性があります)。単一のデータベースで検索する方法については十分に認識していますが、複数のデータベースで検索する方法についてはまだ学習中です。

ヒント、コメント、提案はありますか?

4

4 に答える 4

1

MySQLについては言えませんが、SQLサーバーでは、複数のデータベースから選択できます(接続しているユーザーが正しい権限を持っている場合)。テーブルがすべてのデータベースで類似している場合は、結果をUNIONすることで、1つのクエリでこれを実行できます。したがって、3つのデータベース(、、およびと呼ばれるDB1DB2DB3あり、それぞれにと呼ばれるテーブルがある場合は、次の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%'
于 2010-04-30T14:32:39.920 に答える
1

アプリケーションのサーバー側とクライアント側のどちらでクエリを実行するかに応じて、サーバー側で次の方法を実行できます。

[Server].[Database].[Schema].[Table]

SQL Serverでは、テーブル名の前にサーバー名、データベース名、スキーマ名を付けることができます。スキーマ名を使用したくないが、同じサーバー上にあるデータベースを指定する必要がある場合は、次のように記述できます。

[Database]..[Table]

クライアント側から検索を実行したい場合は、エンタープライズライブラリを使用して、構成可能な名前付き接続文字列とそれが提供する抽象化を容易にすることをお勧めします。

パフォーマンスを向上させたい場合は、 BackgroundWorkerを使用するだけです。繰り返しになりますが、それはクライアント側にあります。

于 2010-04-30T14:34:36.830 に答える
1

XXXConnection (MysqlConnection など) の複数のインスタンスを用意し、それらを反復処理します。

于 2010-04-30T14:29:40.937 に答える
1

異なる接続文字列を使用して、1 つのデータベースを他の各データベースに対して検索する場合と同じ方法を使用します。これは、.NET 4.0 または少し前に公開されたライブラリの 3.5 バージョンの並列拡張機能の良い候補になります。結果セットがある程度同じになる場合は、DataTable.Mergeメソッドの使用も調査します。

于 2010-04-30T14:30:17.853 に答える