【问题标题】:How to create GUID Autonumber programmatically in ms access如何在 ms 访问中以编程方式创建 GUID 自动编号
【发布时间】:2020-02-27 00:42:42
【问题描述】:

如何使用 C# 以编程方式创建 guid 自动编号字段?

【问题讨论】:

  • 您如何在 C# 中使用 MS Access? ADO.NET?
  • 我在 c# 中使用 ms 访问。我将此查询用于创建 guid 字段:“create table hede(Id Guid)”但我需要 guid 和自动增量字段创建或 guid 字段的默认值设置为新的 guid Id。
  • 请注意可能不适用于您的 Access 中的问题。主题:信息:复制和 GUID,好的、坏的和丑陋的 trigeminal.com/usenet/usenet011.asp?1033
  • 有什么原因不能使用 ReplicationID 类型的自动编号字段吗?这样您就不必在代码中生成 GUID。
  • 您的问题含糊不清。您是想要更改表的结构以拥有一个自动填充唯一 GUID 的字段,还是想要在代码中动态创建 GUID?如果是后者,为什么自动递增的 GUID 字段不能免除您在代码中执行此操作的需要?

标签: c# ms-access


【解决方案1】:

为了使您的 GUID 字段自动递增,请使用 GenGUID() 作为默认值。

这适用于使用 ADO 的 Access。也许类似的语句在 C# 中也可以使用:

CurrentProject.Connection.Execute "CREATE TABLE hede (Id Guid DEFAULT GenGUID())"

【讨论】:

  • 这是否与在 Access 中的表设计器中为自动编号字段设置 ReplicationID 相同?如果不是,有什么区别?
  • 是的,这就是它在 Access UI 中的显示方式。他没有说他为什么要从 C# 做。
  • 我读到的问题是关于填充现有字段,而不是将该字段添加到表中。
  • 我注意到GenGUID() 函数只能在在Access 中 使用。如果您使用来自外部程序(如 C#)的 OLE-DB 或 ODBC 来操作 Access 数据库,那么您将收到一条错误消息,指出 GenGUID() 未定义。您需要改用 GUID 文字。
【解决方案2】:

如果是 C# 则

string myguid = Guid.NewGuid.ToString;

如果它的访问那么

Private Declare Function CreateGuid Lib "OLE32.DLL" (pGuid As GUID) As Long
Private Declare Function StringFromGUID2 Lib "OLE32.DLL" (pGuid As GUID, ByVal PointerToString As Long, ByVal MaxLength As Long) As Long

Private Type GUID
    Guid1           As Long
    Guid2           As Integer
    Guid3           As Integer
    Guid4(0 To 7)   As Byte
End Type

Public Function CreateGUIDKey() As String
    Const GUID_OK As Long = 0    
    Const GUID_LENGTH As Long = 38

    Dim udtGUID As GUID
    Dim FormattedGUID As String
    Dim Result As Long

    Result = CreateGuid(udtGUID)

    If Result = GUID_OK Then
        FormattedGUID = String$(GUID_LENGTH, 0)
        StringFromGUID2 udtGUID, StrPtr(FormattedGUID), GUID_LENGTH + 1
    Else
        FormattedGUID = ""
    End If

    CreateGUIDKey = FormattedGUID

End Function

【讨论】:

【解决方案3】:
【解决方案4】:

您知道如何针对 Jet 或 ACE 连接运行 sql 吗?

CREATE TABLE Literal (LinkID GUID)

INSERT INTO Literal (LinkID) VALUES ({guid {11223344-1122-1122-1122-AABBCCDDEEFF}})

【讨论】:

  • 这是一个仅创建 guid 字段并插入新记录的字段。我需要创建 guid 和自动增量字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-02
相关资源
最近更新 更多