「同様の」スキーマを使用して、さまざまなデータベース タイプ (SQL Server、Oracle、DB2) に接続する必要があるアプリケーションに取り組んでいます。テーブル名、列などは同じであるという点で「類似した」スキーマと言いますが、基になるデータ型はそのデータベース型に固有です。たとえば、SQL Server と Oracle データベースの両方に、'tablename' という名前のテーブルと 'column' という名前の列があります。'column' のデータ型は、Oracle では NUMBER、SQL Server では float です。
適切なプロバイダー ファクトリを取得し、接続し、一般的な ADO インターフェイスを介してクエリを実行することには問題ありませんが、この列にアクセスする方法についてはよくわからず、問題を抱えています。
Oracle の場合、NUMBER データ型フィールドにアクセサ関数 'GetDecimal()' を使用することになっていると思いますが、実際には、GetInt32()、GetDouble() などの他のアクセサを使用すると、キャスト例外が発生するようです。SQL Server では、アクセサ関数 'GetDouble()' を使用することになっています。基になるデータベースのデータ型に関係なく、単一のアクセサー関数でこの値を取得する方法/戦略はありますか? バックエンド データベース スキーマを制御できないことに注意してください。
ありがとう、私は応答に感謝します。