如果没有已知或保证的唯一ID,如何在C#中更新给定的SQL行?

时间:2017-10-31 09:16:29

标签: c# sql sql-server

我需要通过一个数据库查找所有类似文本的字段,检查可能在这些字段中的特定URL集并使用一些正则表达式对其进行修改。

实际的文本操作部分很好,但由于我通常会通过表格,其中一些似乎没有主键,我想知道如何更新这些行读这个。我将在下面给出一个虚拟的例子。

foreach(var matchingTable in tables){
    foreach(var matchingColumn in columns){
        SqlCommand currentCommand = new SqlCommand("select * from @matchingTable;");
        currentCommand.Parameters.AddWithValue("@matchingTable", matchingTable);
            using (SqlDataReader reader = currentCommand.ExecuteReader())
            {
                while (reader.Read())
                {
                    if(/* logic to check reader[matchingColumn]*/){
                        /*edit row to change column matchingColumn, a row which I can't be sure has any uniquely identifying factor*/
                    }
                }
            }
    }
}

是否可以编辑此任意行,或者我是否必须更改我这样做的方式?

2 个答案:

答案 0 :(得分:0)

如果表没有保证唯一ID,则没有重复记录的值。因此,如果重复的记录也被更新,那么不会造成任何伤害。

您可以将所有字段视为一个复合字段并执行更新。 要记住的一件事是重复记录也会更新。

答案 1 :(得分:0)

这可能更容易在数据库内解决。您可以编写一个等效于两个for循环的游标来选择表和列。从那里你可以使用正则表达式编写一个简单的UPDATE / WHERE。