2017-04-07 15 views
0

MySQL接続を使用するVB.Netプログラムがあります。
コードをきれいにして再利用できるようにするために、すべての機能を持つクラスDBManagerを作成しました。
私は別のプロジェクトでこのクラスを作ったので、近い将来このクラスからスタンドアロンDLLを取得する予定です。
今私のメインプログラムは単純にインポートするDBManager

DBManagerの関数の1つに、タイプMySqlCommandの引数が必要です。

私はDBManagerの上にMySql.Data.MySqlClientをインポートしましたが、今では私のメインプログラムからタイプ(またはもっと良いクラス)MySqlCommandにアクセスできません。

可能な回避策は、私のメインプログラムにMySql.Data.MySqlClientをインポートすることですが、私は私はちょうど引数としてMySqlCommandを使用するための全体のMySQLの名前空間をインポートするので、それはきれいな解決策ではないと思います....

MySqlCommandを取得するためのクリーナー方法がありますクラスをDBManagerからインポートしないで、メインプログラムにMySql.Data.MySqlClientをインポートしますか?アクセスクラスのインポートクラス

+0

これは回避策ではありません。それは必要な解決策です。そのメソッドがその型のパラメータを必要とする場合、アプリケーションはその型が存在することを知る必要があり、それを行う唯一の方法は、その型が宣言されているライブラリを参照することです。その周りに方法はありません。 'MySqlCommand'を期待するのではなく、SQLコードを含む' String'とパラメータ値の 'Dictionary'を期待し、コマンドオブジェクトを内部的に構築する方法を書いてみましょう。消費しているアプリが 'MySqlClient'について知っている必要がない場合は、その名前空間の型を公開しないでください。 – jmcilhinney

+0

こんにちは、あなたはjmcilhinneyをthaks、私はAddWithValueメソッドを使用するために、MySqlCommand型を使用しました。私はMySqlCommandの代わりにこのカスタムクラスを使用するためにMySqlCommandが行うことを正確にコピーするクラスを作成することが可能かどうか疑問に思っています。そうでなければ文字列を使用しようとします –

+0

メソッド内で単に 'AddWithValue'を使用してください。 – jmcilhinney

答えて

0

私はjmcilhinneyの提案に基づいて解決策を見つけました。
私はクラスをとPublic Parameters As SortedList(Of String, String)の2つのパブリック変数で作成しました。これはパラメータを挿入するのに必要なaddメソッドをサポートしています。
次に、メソッドの引数型をDBSqlCommandに変更しました。
私のメソッドを呼び出すと、MySqlCommandが内部的に処理され、リストがコマンドパラメータに変換されます。

関連する問題