【问题标题】:Auto Increment in SQL INSERT Query?SQL INSERT查询中的自动增量?
【发布时间】:2011-12-09 14:14:02
【问题描述】:

我已连接到 SQL Server Compact Edition 数据库。涉及的表之一有 3 列 - CompanyID、CompanyName 和 CompanyNotes。我在 Visual Basic 中创建了一个表单来将新公司添加到数据库中,当然我不希望用户必须手动输入公司 ID。

在 dataset.xsd 中,我创建了一个 INSERT SQL 查询,它只需插入一个带有 CompanyID、CompanyName 和 CompanyNotes 的新行。我已将 CompanyID 设置为自动递增。但是,当我尝试插入名称和注释时,它不喜欢它,因为我将 ID 字段设置为必填项。如何将新的公司数据插入到具有新 ID 的新行中?

我目前用于添加新公司的非常基本的代码:

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
    Me.CompanyTableAdapter1.AddCompany(??????????, txtCompanyName.Text, txtCompanyNotes.Text)
    Me.Close()
End Sub

我应该用什么来代替“??????”,还是应该做一些完全不同的事情?

谢谢!

【问题讨论】:

  • 您能否也发布用于将记录插入数据库的代码?我猜它在 AddCompany 方法的主体中。

标签: sql vb.net sql-server-ce increment


【解决方案1】:

只需在 SQL 查询中省略 ID 字段即可。

INSERT INTO company (CompanyName, CompanyNotes) VALUES (?, ?)

那么你的方法可以通过去掉ID参数来简化:

Me.CompanyTableAdapter1.AddCompany(txtCompanyName.Text, txtCompanyNotes.Text)

【讨论】:

  • 嗨,马克,感谢您的建议。关于您对插入代码的请求,我只是通过在我的 dataset.xsd 设计视图中右键单击“公司”表,单击添加->查询,然后使用向导添加 SQL 查询来添加查询:“SELECT [CompanyID ], [CompanyName], [CompanyNotes] FROM [Company]" 看看这个屏幕截图,了解我所描述的内容:img1.uploadscreenshot.com/images/orig/10/28916570561-orig.jpg 鉴于这些新信息,您现在应该如何更改我的代码?
  • @IceQubed:我认为本教程会告诉您如何操作:shiningstar.net/aspnet_articles/DataSet/DataSetProject7.aspx。阅读从“使用参数创建我们的插入查询”开始的部分
  • 这是一个很棒的教程,谢谢。但是,由于某种原因,我可以编辑身份等的部分是灰色的。任何想法为什么会这样? img1.uploadscreenshot.com/images/orig/10/28917173646-orig.jpg
  • @IceQubed:CompanyID 列是 varchar 而不是整数?这是故意的吗?
【解决方案2】:

这应该在数据库级别使用自动递增的身份规范完成:

ALTER TABLE TableName ALTER COLUMN ColumnName IDENTITY (/*seed*/1, /*increment*/1)

标识列到位后,您可以在插入期间省略标识列,因为它将在插入时自动分配。

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 2023-04-06
    • 2010-12-31
    • 1970-01-01
    • 2022-11-30
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多