在C#中自动生成Access数据库的ID

时间:2015-05-29 11:59:15

标签: c# ms-access

我有一个访问数据库,我正在为它做一个C#接口。我没有使用内置的,因为我不懂VB。

对于数据库中的两个表,我希望自动生成ID,而不是让用户输入它们。我能想到的唯一方法就是:

  1. 生成随机ID
  2. 检查表格中的每条记录,确保其中的ID不相同。
  3. 如果是唯一使用该ID。否则生成新的ID。
  4. 我认为必须有一种更好的更有效的方法。任何人都可以帮助我吗?

    此外,我的数据库需要稍后通过网络从不同的计算机访问。是否可以使用Access。使用MS-SQL等其他数据库有什么好处吗?

2 个答案:

答案 0 :(得分:1)

Access有一个自动ID列,可以为您执行此操作。

但是如果你打算自己做(不可取),你会有一个这样的表:

TableName     NextId
---------     ------
SomeTable     123
SomethingElse 4567

即。跟踪每个表的最后使用的ID。实际上它有点复杂,因为您必须使用锁定来确保生成新ID时只有一个人使用它。 Access在内部使用这种机制来生成其自动ID。

虽然我们正在使用它,但我认为您可以使用GUID。它们几乎保证在每次生成一个已知的宇宙中都是独一无二的。见C# how to create a Guid value?

可以共享Access数据库 - 您基本上必须将数据库放在网络驱动器上。它是20世纪90年代的一种方法。

最终虽然你最好使用MS-SQL,但有一个名为Sql Server Express的免费版本。 Really Access仅在您将其用于前端时才有用。如果你在C#中做前端,你也可以选择MS-SQL。

MS-SQL支持自动IDS - 它称之为Identity columns

答案 1 :(得分:0)

  
      
  • 生成随机ID
  •   
  • 检查表格中的每条记录,确保其中的ID不相同。
  •   
  • 如果是唯一使用该ID。否则生成新的ID。
  •   

我希望你能看到这种方法的问题。行数越多,插入数据的时间就越长。

否则,如果您没有自动增量ID,标准方法是这样的:

select (count(*) + 1) as newId from mytable