选择并更新 DataTable 中的行

发布于 2024-09-10 20:29:35 字数 388 浏览 4 评论 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 语句更新行的最佳方法是什么?

谢谢..

I have a following SQL statement and would like to update Database table if row found.

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
                }

What is the best method to update the row from SQL Statement?

Thank you..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

躲猫猫 2024-09-17 20:29:35

应该可以在一条语句中完成此操作,而无需往返数据库和返回任何数据:

UPDATE
    TABLEA
SET
    CNum = newValueHere
FROM
    TABLEA A,
    INNER JOIN TABLEB B ON B.CID = A.CID
WHERE
    A.CNum is NULL
AND A.CID=@cID

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

It should be possible to do this in one statement without round-tripping any data from the database and back:

UPDATE
    TABLEA
SET
    CNum = newValueHere
FROM
    TABLEA A,
    INNER JOIN TABLEB B ON B.CID = A.CID
WHERE
    A.CNum is NULL
AND A.CID=@cID

note I qualified the CID reference in the last line ( I think you'll get an error without this as it exists on both tables, and used an inner join to connect your tables. Note that newValueHere can be an expression of any of the columns in A or B.

不弃不离 2024-09-17 20:29:35

使用 Tom 的回答中的 SQL 和以下 C# 将给你你想要的。

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

Using the SQL from Tom's answer with the following C# will give you what you want.

using(SqlCommand cmd = new SqlCommand(sql, conection)) 
{
    int rowsAffected = cmd.ExecuteNonQuery();
}
走过海棠暮 2024-09-17 20:29:35

您可以使用 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"

you can use EXISTS construct to do this in just one query.

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"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文