Web アプリケーションが複数のデータベース、特に SQL Server と MySQL をサポートできるようにする方法を実験しています。
データベースへの接続とクエリの実行を処理する SQL ヘルパー クラスを既にセットアップしています。IDBCommand
、などを使用してIDBConnection
います。コンソール アプリケーションでクラスをテストしましたが、パラメーターなしのクエリで問題なく動作します。
しかし、パラメーターを追加すると、そこから問題が始まります。
現在のテーブル名が変更される可能性があり、クエリでテーブルの名前を変更するのが面倒になるため、テーブル名にパラメーターを使用したいと考えています。
にパラメーターを追加する方法を著者が共有している記事を見つけましたIDBCommand
。記事へのリンクが見つかりませんが、記事から得たもののサンプルを次に示します (作成者に感謝します! :D) パラメータが追加されたことを確認できますIDBCommand
。 QuickWatch ですが、「テーブル変数 "@myTable" を宣言する必要があります」というメッセージが表示されます。エラー。
internal static int AddInputParameter<T>(this IDbCommand cmd,
string name, T value)
{
var p = cmd.CreateParameter();
p.ParameterName = name;
p.Value = value;
return cmd.Parameters.Add(p);
}
私が間違っていることについて何か考えはありますか?
編集:
bew の返信に応えて、 と の両方SqlCommand
を使用してこれを行うことができましたMySqlCommand
。
Edit2:
間違って覚えていたようです。string.format()
過去のプロジェクトでテーブル名に使用しました。