Visual Studio Access DB 插入 id 比以前的 id 大

Posted

技术标签:

【中文标题】Visual Studio Access DB 插入 id 比以前的 id 大【英文标题】:Visual studio Access DB insert id thats bigger as previous id 【发布时间】:2014-06-18 10:11:20 【问题描述】:

读者好,

我有一个关于 vb 访问插入的问题,我有一个 id,但我下一个插入 id 会自动获得更高的数字。这是我到目前为止的代码:

试试

        Dim cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & My.Application.Info.DirectoryPath.ToString() & "\data\testing.Accdb;Persist Security Info=False;")
        If cn.State = ConnectionState.Open Then
            cn.Close()
        End If
        cn.Open()


        Dim sSQL As String = "insert into tabel1(id) values(@d1)"
        Dim cmd As OleDbCommand = New OleDbCommand(sSQL, cn)

        Dim id As OleDbParameter = New OleDbParameter("@d1", OleDbType.VarWChar, 25)
        id.Value = 'so here I need the automatic higher number
        cmd.Parameters.Add(id)

我真的希望你们中的一个可以帮助我,已经谢谢了。 抱歉我的英语不好,因为我是荷兰人,如果有任何问题我会尽力解释。

问候汤姆

【问题讨论】:

您的 ID 字段需要一个 AutoIncrement 标志。然后新号码的插入由数据库引擎自动完成 任何我知道如何在代码中做到这一点,我的数据库是按代码添加到项目中的。因为我真的不明白你的意思。但已经感谢您的快速反应。 当您说“我的数据库是通过代码添加到项目中”时,您的意思是您正在从您的 VB.NET 代码中创建表,可能是通过运行像 CREATE TABLE table1 ... 这样的 DDL 命令? 没有我的数据库是在访问中创建的,并通过代码添加到 vb datagridviewuw 中。 【参考方案1】:

您可以使用嵌套子查询来做到这一点:

INSERT INTO Table1 (Id,Test) SELECT TOP 1 MAX(ID) + 1,"Test Value" FROM Table1;

在本例中,我添加了另一个名为“Test”的字段,以便您了解如何为其他字段输入值。

【讨论】:

顺便说一句,“TOP 1”不是必需的,因为 MAX() 只会返回 1 条记录,但这是防止您从同一张表中抓取其他内容然后导致错误的好习惯。

以上是关于Visual Studio Access DB 插入 id 比以前的 id 大的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio2013怎么创建MFC窗体

如何让 Visual Studio 2015 使用 Access 2010 LIKE 通配符

Git访问TFS出现权限不足(Using Personal Access Tokens to access Visual Studio Online)

如何从 Visual Studio 中的 GridView 更新 Access 数据库?

如何从 Visual Studio C# Winform 中打开 Access 表单?

如何在 Access2007 中使用基于 Visual Studio (2008/2010) 构建的 XML Web 服务