我的老闆已經問過我複製一個MS Access功能,我們將產品遷移到.NET後不久就會失去。.NET在SQL視圖中更新數據
該功能可以在表格網格中查看和更新數據庫中的任何數據,特別是表或視圖中的數據。
我可以爲具有標識列的純表執行此操作,因爲SqlDataAdapter可以自動生成相關的CRUD方法,以通過DataTable填充/更新。
但是,視圖有點棘手。 SQL Server Management Studio確實允許它。如果您在視圖上單擊「編輯top xx rows」,它可以讓您編輯某些列中的數據,看起來像是一個標準的.NET DataGridView - 雖然感覺有點神奇。
所以,有幾個問題:
如何SSMS推斷其主鍵來使用,即使鑰匙不在看法?
SSMS如何確定視圖中的哪一列可以或不可以被編輯/插入/刪除等?
什麼是我最好的選擇複製這個內部的.NET應用程序?
是否可以將DataGridView連接到與數據庫具有常數直接連接的舊樣式oledb/obdc連接?
任何指導正常將高度讚賞。
馬龍
此外,如果視圖不可更新,您可以通過提供一個替代更新觸發器來對其進行縮小處理;)然後可以執行真正的表插入操作。 – TomTom
感謝丹尼爾,沒關係,如果我確實可以讓SQL爲我完成所有工作(這是可取的),但使用普通的.NET,我沒有連接到SQL的連接,所以我需要某種形式的WHERE子句來傳遞以及更新語句以更新視圖中的正確行。將選擇數據與ROW_NUMBER函數一起工作,或者我可以嘗試使用ADODB RecordSet以虛擬模式使用DataGridView,它可以直接編輯數據庫。 – Marlon
您應該使用任何單列或列組合來標識視圖中的行。如果沒有能夠完成這項工作的列的組合(即,視圖可能包含每列中具有相同值的行是可行的),那麼您需要向視圖添加一個新列,該列可用作標識。只要所有基礎表都具有主鍵,視圖也將具有由所有基礎主鍵列的組合構成的主鍵,但所有這些列必須由視圖公開,並且如果視圖具有一些聚合。 –