C# 当C中给定的SQL行没有已知的或保证的唯一ID时,如何更新该行?
我需要通过数据库查找所有类似文本的字段,检查这些字段中可能存在的一组特定URL,并使用一些正则表达式对其进行修改 实际的文本操作部分还可以,但由于我一般都会浏览一些表,其中一些表似乎没有主键,因此我想知道在阅读本文后如何更新这些行。下面我将给出一个虚拟示例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
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或唯一标识符,我只知道我在那一行,并想编辑它。但是,是的,您的复合关键想法似乎是明智的,可能会走这条路: