2010-07-23 96 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(); 
}