Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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# 当C中给定的SQL行没有已知的或保证的唯一ID时,如何更新该行?_C#_Sql_Sql Server - Fatal编程技术网

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

C# 当C中给定的SQL行没有已知的或保证的唯一ID时,如何更新该行?,c#,sql,sql-server,C#,Sql,Sql Server,我需要通过数据库查找所有类似文本的字段,检查这些字段中可能存在的一组特定URL,并使用一些正则表达式对其进行修改 实际的文本操作部分还可以,但由于我一般都会浏览一些表,其中一些表似乎没有主键,因此我想知道在阅读本文后如何更新这些行。下面我将给出一个虚拟示例 foreach(var matchingTable in tables){ foreach(var matchingColumn in columns){ SqlCommand currentCommand = new

我需要通过数据库查找所有类似文本的字段,检查这些字段中可能存在的一组特定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*/
                    }
                }
            }
    }
}

是否可以编辑此任意行,或者我必须更改执行此操作的方式?

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

可以将所有字段视为一个复合字段并执行更新。


需要记住的一点是,重复记录也将被更新。

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

可以将所有字段视为一个复合字段并执行更新。


需要记住的一点是,重复记录也将被更新。

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

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

不要使用addWithValue,而只使用add。不要使用addWithValue,而只使用add。我通常知道这个想法,但我希望代码能够在运行时处理它。例如,作为SQLServerManagementStudio中的人员,我可以单击“编辑行”,在其中一行中查找错误的值,然后对其进行编辑。我不需要知道确切的行ID或唯一标识符,我只知道我在那一行,并想编辑它。但是是的,您的复合键想法似乎是明智的,可能会沿着这条路线走下去:我通常都知道这个想法,但我希望代码能够在运行时处理它。例如,作为SQLServerManagementStudio中的人员,我可以单击“编辑行”,在其中一行中查找错误的值,然后对其进行编辑。我不需要知道确切的行ID或唯一标识符,我只知道我在那一行,并想编辑它。但是,是的,您的复合关键想法似乎是明智的,可能会走这条路: