none
C# 查詢太過複雜

    問題

  • C#  修改或刪除出現查詢太過複雜

    有人知道怎麼解決嗎?

    好像欄位太多就會出現此一問題

    但是我的資料庫就是需要那麼多欄位

    有誰能幫幫我嗎?

    知道怎麼解決嗎?

    謝囉

    2006年7月5日 上午 12:49

解答

  • 你上次問的是 "UPDATE",所以我才要你拆成二段,這個方法必須要有 PK 才可以 .

    假設一百個欄位要更新,就:

    SQL 1: UPDATE table SET field1=xxx, field2=xxx,...., field50=xxx WHERE PKfield = conditionValue

    SQL 2: UPDATE table SET field51=xxx, field52=xxx,...., field100=xxx WHERE PKfield = conditionValue

    SELECT 的話直接用 "*" (SELECT * FROM ...)來代替所有欄位不就好了嗎?

    2006年7月5日 上午 06:54

所有回覆

  • 你有試過了 "拆成二段更新" 的方法了嗎 ?

    刪除只要指定 Key 值就可以了吧 ?

    2006年7月5日 上午 02:19
  • HI,

    會產生複雜的修改或刪除敘述是為了偵測資料庫中的記錄是否有被其他的使用者修改過, 如果您不想產生太複雜的修改或刪除, 可以加入DataSource到網頁時不要勾選Optimistic Concurrency項目, 就可以產生較簡單的修改或刪除敘述, 或是在為視窗應用程式加好DataSource之後, 自行編輯DataSet的TableAdapter的UpdateCommand的CommandText的內容值, 不過這樣做之後就會喪失偵測資料庫中的記錄是否有被其他的使用者修改過的功能了

    tihs

    2006年7月5日 上午 02:33
  • ?

    Access 資料庫也可以這樣做嗎 ?

    2006年7月5日 上午 02:38
  • Optimistic Concurrency

    是用來偵查是否有變更過.避免發生並行衝突..

    所謂並行衝突是什麼意思呢?

    那如果沒勾選會有什麼影響嗎?

    主要功能是用來幹麻的呢?

    2006年7月5日 上午 05:42
  • 小朱..我沒試過拆成兩段ㄋㄟ...

    拆成二段更新是指在command text 把本來的SELECT...............FORM[XXX]

    改成SELECE..........FORM[XXX]  SELECT.......FORM[XXX]  嗎

    謝謝囉

    2006年7月5日 上午 05:57
  • 你上次問的是 "UPDATE",所以我才要你拆成二段,這個方法必須要有 PK 才可以 .

    假設一百個欄位要更新,就:

    SQL 1: UPDATE table SET field1=xxx, field2=xxx,...., field50=xxx WHERE PKfield = conditionValue

    SQL 2: UPDATE table SET field51=xxx, field52=xxx,...., field100=xxx WHERE PKfield = conditionValue

    SELECT 的話直接用 "*" (SELECT * FROM ...)來代替所有欄位不就好了嗎?

    2006年7月5日 上午 06:54
  • 應該指的是避免有兩個程式

    同時存取同一條row

    而造成兩邊資料不一的問題

    應該是這樣子吧

    2006年7月8日 下午 07:58
  • 看起來是critical section problem

    翻翻os吧

    2008年6月14日 上午 07:20