0

ユーザー入力を受け入れるアプリケーションに取り組んでおり、場合によってはその入力を (パラメータ化された SqlCommand を介して) SQL Server ストアド プロシージャに直接入力し、他の場合には SP を実行する前に一連の変換を介してその入力を実行します。

SqlCommandBuilder.DeriveParametersDB からパラメーターのリストを取得し、それらのパラメーターの値を文字列として割り当てるために使用しています。

これまでのところ、SP を実行する前に文字列を適切な SqlDbType に解析できることを検証する方法が見つかりませんでした。私は何かを望んでいました

parameter.SqlDbType.TryParse(inputValue);

しかし、SqlDBType は単なる列挙型であるため、そのようなメソッドは存在しないようです。これまでのところ、私の唯一のオプションは、SP を実行してスローされたエラーをキャッチすることですが、これでは問題の原因となっているパラメーターがわからないため、ユーザーは面白がっていません。

SqlDbType で switch ステートメントを使用して入力を自分で検証できることはわかっていますが、これは悪い考えのようです。

この問題について SO を検索してみましたが、関連する質問はすべて、文字列を実際の型ではなく SqlDbType 列挙型メンバーに解析することを中心に展開しているようです。私が見つけた最も近いものはこれでしたが、 System.Type が SqlDbType 値と互換性があることを確認することについての唯一の答えです。

4

0 に答える 0