我对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" />
但是这给了我一个错误,说“查询值和目标字段的数量不一样”。关于如何解决这个或其他方法来实现我想要的结果的任何想法?
答案 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子句中插入的列与目标表中的列不同。
干杯