0

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# ではうまく機能しませんでした。無数の解決策を試しましたが、役に立ちませんでした。

  1. この例外を一般的な方法で処理する方法を知っている人はいますか? (ユーザーは任意の select ステートメントを入力したり、クエリ エディターに結合したりできます)

  2. リストにさらに表示される2つの列を削除するように、返された列を操作する方法を知っている人はいますか? (ここでの私の困難は、データベースの列名がEMailそうである場合、select Email, * from Blah返される2つの関連する列がそうでEMailあり、ADO.NETまたはC#がクエリの部分EMailから2番目の列をエイリアスするため、2番目の列を検出できないことです重複して削除します)*EMail1

  3. 私が考えていなかった別の解決策を誰かが持っていますか?

どうもありがとうございました

4

1 に答える 1

0

実際、次のようにして、すべての変数の名前を email_userdefined のような名前に変更できます。

First_Interesting_Field を First_Interesting_Field_userdefined として、Second_Interesting_Field を Second_Interesting_Field_userdefined として SELECT * A_Table_With_Many_Columns から

user_defined は、注文番号やその他のユーザーが受け入れられるものなど、必要なものに置き換えてください

于 2013-04-30T05:12:57.837 に答える