2010-10-25 153 views
0

我正在使用c#和MySQL的Windows應用程序。 我通過將文本文件讀入MySQL數據庫來插入新記錄,數據庫沒有主鍵,但是我們可以考慮將其組合成主鍵(但實際上沒有主鍵的數據庫)。 我知道如何使用DataAdapter和DataSet添加和更新記錄。但是我無法更新數據庫中沒有主鍵的記錄。如何使用數據庫(C#和MySQL)更新數據庫沒有主鍵

你可以請指導我,我怎樣才能更新數據庫中的記錄與一個沒有主鍵的數據庫。

謝謝。

+0

爲什麼沒有主鍵?沒有主鍵列的表被認爲是糟糕的設計。 – 2010-10-25 13:16:44

回答

1

假設你有一個表:

column1, 
column2, 
.. 
columnN, 
target -- column to update 

然後使用:

UPDATE table 
SET 
    target = @target 
WHERE 
    column1 = @va1, column2 = @val, -- etc specify all columns in table 

如果您有重複(絕對平等)的記錄,您將更新所有的人。

+0

由於abatishchev, 但我期待類似於 - myDataRow [「TranID」] = strTranRC; myDataRow [「Message」] = strMessage.Trim(); DSet.Tables [「LOGData」] .Rows.Add(myDataRow); ODBCDADP.Update(DSet,「LOGData」); 是否有可能編寫這樣的代碼進行更新(如果主鍵存在,但在這種情況下主鍵不存在),而不是寫入查詢並將值傳遞給查詢,因爲我們無法檢查查詢值是否爲空(對於變量的十進制類型)。 謝謝/ Prabhat – Avinash 2010-10-25 13:11:47

1

爲了使用數據集,您需要定義更新命令「手動」。

您需要設置正確的DataAdapter.UpdateCommand

在我看來,將表單添加主鍵列是一種更好的方法。

+0

我嘗試通過創建更新命令,然後在查詢中設置@paramenters的參數,代碼執行但沒有數據更新...我想它的一點點難以做這樣的數據更新。最後,我通過命令對象和Command.ExecuteNonQuery()方法做了它,現在我動態地生成querystring它的工作perfactely ....感謝您的幫助...! :) – Avinash 2010-10-27 11:45:55