我有一个访问数据库,我正在为它做一个C#接口。我没有使用内置的,因为我不懂VB。
对于数据库中的两个表,我希望自动生成ID,而不是让用户输入它们。我能想到的唯一方法就是:
我认为必须有一种更好的更有效的方法。任何人都可以帮助我吗?
此外,我的数据库需要稍后通过网络从不同的计算机访问。是否可以使用Access。使用MS-SQL等其他数据库有什么好处吗?
答案 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