Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中自动生成Access数据库的ID#_C#_Ms Access - Fatal编程技术网

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

C# 在C中自动生成Access数据库的ID#,c#,ms-access,C#,Ms Access,我有一个access数据库,我正在为它制作一个C#接口。我不使用内置的,因为我不知道VB 对于数据库中的两个表,我希望自动生成ID,而不是让用户输入它们。我能想到的唯一方法是: 生成一个随机ID 检查表中的每条记录,确保非用户具有相同的ID 如果是唯一的,则使用该ID。否则,生成新ID 我只是觉得一定有更好更有效的方法来做。有人能帮我吗 此外,我的数据库以后需要通过网络从不同的计算机访问。使用访问权限可以吗。使用其他数据库(如MS-SQL)有什么好处吗?Access有一个自动id列,可以为您实现

我有一个access数据库,我正在为它制作一个C#接口。我不使用内置的,因为我不知道VB

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

  • 生成一个随机ID
  • 检查表中的每条记录,确保非用户具有相同的ID
  • 如果是唯一的,则使用该ID。否则,生成新ID
  • 我只是觉得一定有更好更有效的方法来做。有人能帮我吗


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

    Access有一个自动id列,可以为您实现这一点

    但是,如果你打算自己做(不可取),你会有这样一张桌子:

    TableName     NextId
    ---------     ------
    SomeTable     123
    SomethingElse 4567
    
    select (count(*) + 1) as newId from mytable
    
    i、 e.跟踪每个表最后使用的ID。实际上,它有点复杂,因为您必须使用锁定来确保生成新ID时只有一个人使用它。Access在内部使用类似这样的机制来生成其自动ID

    当我们这样做的时候,我想你可以使用guid。事实上,每次你创造一个宇宙时,它们在整个已知宇宙中都是独一无二的。看

    Access数据库可以共享—您基本上必须将数据库放在网络驱动器上。这是一种非常类似于20世纪90年代的方法

    最终,尽管您最好使用MS-SQL,但有一个名为SQL Server Express的免费版本。真正的访问只有在前端也使用它时才有用。如果你要用C语言做前端,你最好用MS-SQL

    MS-SQL支持自动ID—它调用它们

    • 生成一个随机ID
    • 检查表中的每条记录,确保非用户具有相同的ID
    • 如果是唯一的,则使用该ID。否则,生成新ID
    我希望你能看到这种方法的问题所在。行数越多,插入数据的时间就越长

    否则,如果没有自动增量ID,则标准方法如下:

    TableName     NextId
    ---------     ------
    SomeTable     123
    SomethingElse 4567
    
    select (count(*) + 1) as newId from mytable
    

    只需让Access自动生成id,无需手动创建。只需将id字段定义为自动递增。我很确定Access具有自动id列类型。。。我会改用MS-SQL,它有一个免费版本——SQLServerExpress。Access可以跨网络使用,但它需要将数据库放在网络驱动器上,而且这一切都非常简单。如果您不使用Access提供的VBA功能,我绝对建议您使用SQL Server Express。它将支持更大的数据库,并能更好地处理多用户访问。如果您不使用访问前端,请使用MySQL或MS SQL Express。虽然访问将通过一个同时有多个用户的网络工作,但很容易损坏,也很难保护。谢谢!我将使用SQLServerExpress。我在使用它时会遇到这个问题吗?还是它也有一个自动id列?我看到了UniData和UniVerse的可怕闪回。@Hauzron SQL Server支持自动递增字段。