Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择并更新DataTable中的行_C# - Fatal编程技术网

C# 选择并更新DataTable中的行

C# 选择并更新DataTable中的行,c#,C#,我有下面的SQL语句,如果找到行,我想更新数据库表 string sql = "Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND A.CNum is NULL AND CID=@cID" DataTable dt = querySql(sql, params); if (dt.Rows.Count > 0) {

我有下面的SQL语句,如果找到行,我想更新数据库表

string sql = "Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND A.CNum is NULL AND CID=@cID"

DataTable dt = querySql(sql, params);

                if (dt.Rows.Count > 0)
                {
                    // I would like to update CNum from TableA
                }
从SQL语句更新行的最佳方法是什么

谢谢。

您可以使用EXISTS构造在一个查询中完成此操作

string sql = "IF EXISTS(Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND A.CNum is NULL AND CID=@cID) BEGIN ..... END"
您可以在一个查询中使用EXISTS构造来实现这一点

string sql = "IF EXISTS(Select A.CNum FROM TABLEA A, TABLEB B WHERE A.CID= B.CID AND A.CNum is NULL AND CID=@cID) BEGIN ..... END"

应该可以在一条语句中执行此操作,而无需往返数据库中的任何数据:


注意,我在最后一行中限定了CID引用,我认为您将得到一个错误,因为它存在于两个表上,并使用内部联接连接表。请注意,newValueHere可以是A或B中任何列的表达式。

应该可以在一条语句中执行此操作,而无需往返数据库中的任何数据:


注意,我在最后一行中限定了CID引用,我认为您将得到一个错误,因为它存在于两个表上,并使用内部联接连接表。请注意,newValueHere可以是A或B中任意列的表达式。

使用Tom答案中的SQL和以下C将得到您想要的结果

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

使用Tom答案中的SQL和下面的C将得到您想要的

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

谢谢你,汤姆。如果表中有一行,我希望通过此方法返回TRUE。我怎么知道桌子上有没有记录?谢谢汤姆。如果表中有一行,我希望通过此方法返回TRUE。我怎么知道桌子上有没有记录?谢谢。我没有使用存储过程。如果行已更新,我是否可以找到其他行?谢谢。我没有使用存储过程。如果行已被更新,我是否仍能找到?