1

我对 C# 非常陌生,并尝试将多个值插入到 access 数据库中,其中一个值将递增 1。我不能在 access 中使用自动编号,因为条目从 99001 开始,我需要能够编辑/跳过数字很​​容易。我整天都在尝试与此类似的不同帖子,但所有帖子都会导致错误或根本不起作用。我的代码目前如下。

AccessDataSource1.InsertCommand = "INSERT INTO [1U] ([serial], [model], [motherboard], [mobogroup], [bios]) SELECT ((SELECT MAX([serial])+1 FROM [1U]), ?, ?, ?, ?)";
AccessDataSource1.InsertParameters["serial"].DefaultValue = "1";
AccessDataSource1.InsertParameters["model"].DefaultValue = "D";
AccessDataSource1.InsertParameters["motherboard"].DefaultValue = "D";
AccessDataSource1.InsertParameters["mobogroup"].DefaultValue = "D";
AccessDataSource1.InsertParameters["bios"].DefaultValue = "D";

按钮将其称为

<asp:Button ID="InsertButton" runat="server"  OnClick="update_click" CausesValidation="True" CommandName="Insert" Text="Insert" />

但这给了我一个错误,说“查询值和目标字段的数量不一样”。关于如何解决这个问题或替代方法来实现我正在寻找的结果的任何想法?

4

4 回答 4

1

我不能在访问中使用自动编号,因为条目从 99001 开始

您可以欺骗 MS Access 使用种子自动编号,有关如何执行此操作的示例,请参阅创建以大于 1 的数字开头的自动编号字段。

于 2012-09-07T16:34:43.067 回答
1

您有 4 个占位符和 5 个插入参数,这就是您的错误消息的原因。由于您没有serial在查询中使用,请删除该 InputParameter。

AccessDataSource1.InsertCommand = "INSERT INTO [1U] ([serial], [model], [motherboard], [mobogroup], [bios]) SELECT ((SELECT MAX([serial])+1 FROM [1U]), ?, ?, ?, ?)";
AccessDataSource1.InsertParameters["model"].DefaultValue = "D";
AccessDataSource1.InsertParameters["motherboard"].DefaultValue = "D";
AccessDataSource1.InsertParameters["mobogroup"].DefaultValue = "D";
AccessDataSource1.InsertParameters["bios"].DefaultValue = "D";

此外,文档在查询中显示命名输入参数,而不是问号。如果上面的代码不起作用,请尝试将 InsertCommand 更改为此。

AccessDataSource1.InsertCommand = "INSERT INTO [1U] ([serial], [model], [motherboard], [mobogroup], [bios]) SELECT ((SELECT MAX([serial])+1 FROM [1U]), @model, @moetherboard, @mobogroup, @bios)";
于 2012-09-07T16:37:23.073 回答
0

如果你只是硬编码值怎么办?

AccessDataSource1.InsertCommand = "INSERT INTO [1U] ([serial], [model], [motherboard], [mobogroup], [bios]) SELECT ((SELECT MAX([serial])+1 FROM [1U]), "D", "D", "D", "D")";
于 2012-09-07T16:34:36.570 回答
0

我认为你做的是对的。自动编号(SQL 中的标识列)已用于对记录进行编号,生成手动编号可能会给您带来一些问题,因为您说您是初学者。您还需要知道自动编号列的种子和起始编号是如何工作的。

顺便说一句,您的问题与您在评论中提到的任何内容无关。它只是说您在 Insert 子句中插入的列与目标表中的列不同。

干杯

于 2012-09-07T16:35:58.753 回答