【发布时间】:2016-09-15 22:02:33
【问题描述】:
我正在用 C# 为库系统创建一个数据库系统(使用 Access 数据库),但我遇到了障碍。我有一个名为“BSUser”的表,它有一个主键“UserID”的自动增量列;如果用户在定义新用户时没有输入值,我希望它自动生成,但我也希望它能够接受手动定义的值。鉴于用户输入的信息,我正在使用以下代码创建我的新行。注意检查用户ID是否为空...
BookshelfDataSet.BSUserRow user = dataSet.BSUser.NewBSUserRow();
if (userID != null) user.UserID = userID.Value;
user.Forename = forename;
user.Surname = surname;
user.IsAdmin = isAdmin;
dataSet.BSUser.AddBSUserRow(user);
SaveDataSetToDatabase();
这是应该更新数据库的代码...
private void SaveDataSetToDatabase()
{
this.bookTableAdapter.Update(this.dataSet);
this.copyTableAdapter.Update(this.dataSet);
this.userTableAdapter.Update(this.dataSet);
this.loanTableAdapter.Update(this.dataSet);
this.ratingTableAdapter.Update(this.dataSet);
}
该行已成功保存到数据库中,但它的 ID 是自动生成的,尽管我已经手动设置了它。这是一个问题,因为图书馆的现有用户已经拥有旧系统的 ID,所以我需要将这些 ID 转移到新系统中。请有人告诉我我做错了什么以及如何解决这个问题?
【问题讨论】:
-
这有什么作用?
-
图书馆的每个用户都有一张带有条形码的借书证;因此,我需要能够为现有用户输入这些条形码,以便在新系统上进行设置。现有书籍上还贴有条形码以唯一识别它们。我希望将相应的列作为自动增量,所以当新用户或书籍等时。被添加到数据库中(还没有条形码),系统将能够为新对象生成 ID 和条形码。
-
在表上创建一个新的主键,它是一个 GUID 或字符串或自动增量。在旧的 Pkey 字段上创建一个索引,您将拥有两全其美,每行的绝对唯一 ID 和项目的唯一 ID。