2017-06-27 4 views
0

DBテーブルにfloat, nullパラメータがあります。
私のC++ 11アプリケーションから、nanの値をDBテーブルにNULLとして書きたいと思います。私は、次のやっているNAN(C++コードから)をSQL Server 2012に書き込む


1、DBでCComBSTR
2にL"NULL"と店にnanの変換NULLに戻って、この文字列を変換し、float列に対して、これを書いてください。

私の質問:この場合、nanをDBに書き込む良い方法はありますか?
具体的には、更新の頻度が静かに高く、テーブルの多くのfloatパラメータを使用しているので、これを避けたいのです。CComBstr

+0

そして、なぜ機能したら変更したいのですか?変換は、私のボトルネックには見えません。少なくとも、メモリ内のpc C++操作に比べて通常遅いデータベース挿入と比較して。 – Jepessen

+0

はい、その機能のボトルネックではありませんが、私の関心はパフォーマンスです。 NULLを文字列に変換した後、DBの文字列をNULLに戻します。また、文字列のためにDBでいくつかのサイズを予約する必要があります。 – Nipun

+0

私は演奏について話していました。 dbへのクエリの実行は、いくつかのキャスト操作を実行するよりもはるかに遅いので、正しい場合にはパフォーマンスの損失は無関係で、時間を費やして最適化しようとすると無駄になる可能性があります。それは2秒間の操作で1秒間を節約しようとするようなものですが、次の1分間は5分かかります... – Jepessen

答えて

0

私はこれを共有するために考えられ、これよりも良く見える別の解決策を、得た:
COLUMN_ENTRY_STATUSCOLUMN_ENTRY_TYPE_STATUSなどのようにDBデータの読出し/書込みを行うために使用される複数のマクロが

これらはstatus旗を取る...あります各DBフィールドに対して
- 書き込み中、値がNANの場合、statusフラグをDBSTATUS_S_ISNULLに設定すると、DB自体がfloatフィールド値をNULLに設定します。
- statusフラグがDBSTATUS_S_ISNULLの場合はNANに設定されています。

関連する問題