SQL Server バックエンドを使用して VB6 アプリを C# に変換しています。アプリには非常に一般的なクエリ エディターが含まれており、ユーザーは任意の選択クエリを作成し、結果をグリッド コントロールで視覚的に返すことができます。一部のテーブルには数百の列があります (デザインが悪いことはわかっていますが、これを制御することはできません)。管理者ユーザーの典型的な使用例は次のとおりです。
select * from A_Table_With_Many_Columns
ただし、すべてのデータを表示できるようにしたい一方で、特に 2 つの列に関心があり、これらをグリッドの最初の 2 つの列として (たとえば、67 番目と 99 番目ではなく) 表示したいので、代わりに以下の記述:
select First_Interesting_Field, Second_Interesting_Field, *
from A_Table_With_Many_Columns
次に、グリッド内のデータを変更します。ただし、このデータを保存すると、同時実行違反が発生します ( DBConcurrencyException
)。これは、接続された VB6 の RecordSet では問題なく機能しましたが、C# ではうまく機能しませんでした。無数の解決策を試しましたが、役に立ちませんでした。
この例外を一般的な方法で処理する方法を知っている人はいますか? (ユーザーは任意の select ステートメントを入力したり、クエリ エディターに結合したりできます)
リストにさらに表示される2つの列を削除するように、返された列を操作する方法を知っている人はいますか? (ここでの私の困難は、データベースの列名が
EMail
そうである場合、select Email, * from Blah
返される2つの関連する列がそうでEMail
あり、ADO.NETまたはC#がクエリの部分EMail
から2番目の列をエイリアスするため、2番目の列を検出できないことです重複して削除します)*
EMail1
私が考えていなかった別の解決策を誰かが持っていますか?
どうもありがとうございました