2010-07-23 84 views
0

我有以下SQL語句,並且想要在找到行時更新數據庫表。選擇並更新DataTable中的行

string sql = "Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND A.CNum is NULL AND [email protected]" 

DataTable dt = querySql(sql, params); 

       if (dt.Rows.Count > 0) 
       { 
        // I would like to update CNum from TableA 
       } 

什麼是從SQL語句更新行的最佳方法?

謝謝。

回答

0

可以使用EXISTS結構來做到這一點,在短短一個查詢。

string sql = "IF EXISTS(Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND A.CNum is NULL AND [email protected]) BEGIN ..... END" 
+0

謝謝。我沒有使用存儲過程。無論如何,我可以找到行是否已更新? – nav100 2010-07-23 21:02:29

2

它應該能夠做到這一點在一個聲明中沒有往返從數據庫的任何數據和備份:

 
UPDATE 
    TABLEA 
SET 
    CNum = newValueHere 
FROM 
    TABLEA A, 
    INNER JOIN TABLEB B ON B.CID = A.CID 
WHERE 
    A.CNum is NULL 
AND [email protected] 

注意到我有資格在最後一行的CID參考(我請注意,newValueHere可以是A或B中任何列的表達式。

+0

謝謝湯姆。如果表中有一行,我想從這個方法返回TRUE。我怎麼知道表中是否有記錄? – nav100 2010-07-23 20:40:40

1

使用SQL從湯姆的答案與t他繼C#會給你你想要的。

using(SqlCommand cmd = new SqlCommand(sql, conection)) 
{ 
    int rowsAffected = cmd.ExecuteNonQuery(); 
}