【问题标题】: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);
        }
    }
}

【问题讨论】:

    标签: c# sql database wpf instance


    【解决方案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。查看此帖子stackoverflow.com/questions/39771/…
    • 也许我实现错了,但是当使用string query = @"UPDATE parts SET [InternalID] = '" + Guid.NewGuid() + "'"; 时,我的结果是每一行的相同键。见:prntscr.com/s43cd9
    • 噢,我明白了。使用此 sql 进行更新 :) UPDATE 部分 SET [InternalID] = NEWID()
    • 我不太明白所以我按照这个线程创建了一个新表,然后合并表stackoverflow.com/questions/1746125/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多