[英]Selecting the same column from the same table multiple times in the same statement
我正在使用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的已連接RecordSets一起正常工作,但在C#中效果不佳。 我嘗試了無數種解決方案。
有誰知道如何以通用方式處理此異常? (請記住,用戶可以在查詢編輯器中鍵入ANY select語句或join等)
有誰知道我將如何處理返回的列,以便刪除列表中進一步顯示的2列? (我的困難是,如果數據庫中的列名是EMail
那么我確實select Email, * from Blah
中返回的2個相關列是EMail
而ADO.NET或C#將查詢的*
部分中的第二個EMail
列別名為EMail1
因此我無法將第二列檢測為重復並將其刪除)
有人有我沒想到的替代解決方案嗎?
非常感謝你
實際上,您可以通過執行以下操作將所有變量重命名為email_userdefined:
選擇First_Interesting_Field作為First_Interesting_Field_userdefined,Second_Interesting_Field作為Second_Interesting_Field_userdefined,*從A_Table_With_Many_Columns
將user_defined替換為所需的內容,例如訂單號或其他任何用戶可接受的內容
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.