1

私が設計しているアプリケーションは、ネットワーク経由で任意の MS または Oracle データベースにアクセスできる必要があり、データベース内のすべてのデータベースを読み取り、すべてのテーブルを一覧表示する必要があります。

最後に、ユーザーはテーブル全体をダウンロードしてアプリケーションにロードできる必要があります。

ユーザーはいくつかのパラメータを挿入する必要があります:

  1. IPアドレスとポート
  2. ログインとパスワード。

次に、データベースを選択する必要があり、次にテーブルを選択する必要があります。

私はインターネットを調べて、ほとんど箱から出してすぐに使えるものを見つけました。私が見つけた最良の結果は、実際には Dapper ( http://code.google.com/p/dapper-dot-net/ )です。

私のニーズを満たすことができるより良いライブラリはありませんか?

4

4 に答える 4

2

あなたのニーズを満たすライブラリはありません。SSMS などのデータベース ブラウジング ツールを構築しているため、Dapper は動的な方法でデータを取得するための手段にすぎません。ただし、基本的な ADO.NET でも同じように簡単に実行できます。は非常に動的な構造であり、必要なものを十分に備えていますDataTable

実際、私は Dapper が大好きIDbConnectionですが、私があなたの立場なら、インターフェイスだけを使用してインタラクションを抽象化できるため、ADO.NET を使用することをお勧めしますIDbCommand

于 2013-09-06T12:38:26.380 に答える
1

いくつかのメモ: ADO.NET を使用するという考えに同意します。そして、SqlConnection と ODP.NET が共有するインターフェースに戻ります。

いくつかのアイデア:

IoC リンク

INFORMATION_SCHEMA

それをグーグル。これは、さまざまな RDBMS の標準です。

私の推測では、同じ抽象クラス (上記の IoC リンクを参照) を実装する 2 つの「コンクリート」を記述できると思います...抽象クラスには「共通ロジック」があります...しかし、何かがあれば「安全値」があります。 2 つの RDBMS 間でまったく同じように動作します。

ただし、結果は動的であるため、テーブル/列が何であるかを事前に知ることができないという意味で、DataTable は悪い考えではありません。

別のアイデアは、これ、「動的データ」プロジェクトを見ることです。

http://msdn.microsoft.com/en-us/library/cc488545%28v=vs.100%29.aspx

しかし、それがOracleの実装を取得したかどうかはわかりません(おそらくそうではないかもしれません)。おそらくSql Serverだけです。

于 2013-09-06T13:42:42.760 に答える
0

DbProviderFactory を使用して、ようやく幸せを見つけました。

接続文字列を作成し、接続の不変名を返すプロパティを持つクラスを作成しました (例: "System.Data.SqlClient")。

私はこの不変の名前とこの接続文字列をそのように使用します:

 this.Factory = DbProviderFactories.GetFactory(connexionStringBuilder.InvariantName);
 this.Connection = Factory.CreateConnection();
 Connection.ConnectionString = connexionStringBuilder.ConnexionString;

そして、私は過去に持っていたすべての ADO.Net クエリを持っています。

于 2013-09-12T08:33:32.657 に答える