插入MAX()+ 1和其他值

时间:2012-09-07 16:29:06

标签: c# asp.net ms-access insert max

我对C#很新,并尝试向访问数据库插入多个值,其中一个值将增加1.我无法在访问中使用自动编号,因为条目从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 个答案:

答案 0 :(得分:1)

  

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

您可以欺骗MS Access使用种子自动编号,有关如何执行此操作的示例,请参阅Create an AutoNumber field that starts with a number greater than 1

答案 1 :(得分: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";

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

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

答案 2 :(得分:0)

如果您只是对值进行硬编码会怎样?

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

答案 3 :(得分:0)

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

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

干杯