如何为数据库中的列生成唯一字符串?
Posted
技术标签:
【中文标题】如何为数据库中的列生成唯一字符串?【英文标题】:How to generate a unique string for a column in a database? 【发布时间】:2020-08-05 15:57:34 【问题描述】:我正在尝试使用唯一字符串填充数据库中的列。我如何做到这一点?
我当前的代码只是调用GetUniqueKey()
方法的同一个实例,所以它只生成相同的密钥。此方法只会运行一次。就像我说的,我试图为每一行生成一个唯一的键。 GetUniqueKey()
方法生成一个字母数字字符串。如何调用Hash.GetUniqueKey()
的新实例以获得新的唯一键?
private readonly int KEY_SIZE = 5;
public void Fill()
connectionStringBuilder.InitialCatalog = "parts";
connection.ConnectionString = CONSTANTS.connStringParts;
string query = @"UPDATE parts SET [InternalID] = '" + Hash.GetUniqueKey(KEY_SIZE) + "'";
SqlCommand command = new SqlCommand(query, connection);
using(connection)
try
connection.Open();
command.ExecuteNonQuery();
connection.Close();
catch(Exception ex)
MessageBox.Show(Resource1.DatabaseConnectionError, Resource1.Error, MessageBoxButton.OK, MessageBoxImage.Error);
【问题讨论】:
【参考方案1】:您考虑过使用 Guid 吗?
https://docs.microsoft.com/tr-tr/dotnet/api/system.guid.newguid?view=netframework-4.8
// Create and display the value of two GUIDs.
Guid g = Guid.NewGuid();
Console.WriteLine(g);
Console.WriteLine(Guid.NewGuid());
// This code example produces a result similar to the following:
// 0f8fad5b-d9cb-469f-a165-70867728950e
// 7c9e6679-7425-40de-944b-e07fc1f90ae7
【讨论】:
问题是,它仍然会调用相同的 NewGuid() 实例,因此它会生成相同的 GUID。不过很有趣。我会考虑将其作为我的GetUniqueKey()
方法的替代方法
不,很难生成相同的 GUID。查看此帖子***.com/questions/39771/…
也许我实现错了,但是当使用string query = @"UPDATE parts SET [InternalID] = '" + Guid.NewGuid() + "'";
时,我的结果是每一行的相同键。见:prntscr.com/s43cd9
噢,我明白了。使用此 sql 进行更新 :) UPDATE 部分 SET [InternalID] = NEWID()
我不太明白所以我按照这个线程创建了一个新表,然后合并表***.com/questions/1746125/…以上是关于如何为数据库中的列生成唯一字符串?的主要内容,如果未能解决你的问题,请参考以下文章