Asp.net 插入数据但获取“重复值”错误

Asp.net 插入数据但获取“重复值”错误,asp.net,vb.net,ms-access,insert,duplicate-data,Asp.net,Vb.net,Ms Access,Insert,Duplicate Data,我正在尝试插入Access数据库,当我打开数据库(数据在那里)时,插入成功,但我得到一个错误:您请求的表更改未成功,因为它们会在索引、主键或关系中创建重复值。更改字段中的数据或包含重复数据的字段,删除索引,或重新定义索引以允许重复条目,然后重试 这真让我困惑。无论我插入什么,它仍然会给我相同的错误。我不明白为什么它会给我一个错误,即使它在工作。这是我的代码隐藏: Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByV

我正在尝试插入Access数据库,当我打开数据库(数据在那里)时,插入成功,但我得到一个错误:您请求的表更改未成功,因为它们会在索引、主键或关系中创建重复值。更改字段中的数据或包含重复数据的字段,删除索引,或重新定义索引以允许重复条目,然后重试

这真让我困惑。无论我插入什么,它仍然会给我相同的错误。我不明白为什么它会给我一个错误,即使它在工作。这是我的代码隐藏:

Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.FinishButtonClick
    'Collect Data
    Dim myDept = txtDept.Text
    Dim myFirst = txtFirstName.Text
    Dim myLast = txtLastName.Text
    Dim myPrefix = txtCoursePrefix.Text
    Dim myNum = txtCourseNum.Text

    'Define Connection
    Dim myConn As New OleDbConnection
    myConn.ConnectionString = AccessDataSource1.ConnectionString

    'Create commands
    Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (department, name_first, name_last, prefix, course_number) VALUES (?, ?, ?, ?, ?)", myConn)

    myIns1.Parameters.AddWithValue("@myDept", myDept)
    myIns1.Parameters.AddWithValue("@myFirst", myFirst)
    myIns1.Parameters.AddWithValue("@myLast", myLast)
    myIns1.Parameters.AddWithValue("@myPrefix", myPrefix)
    myIns1.Parameters.AddWithValue("@myNum", myNum)

    'Execute the commands
    myConn.Open()
    myIns1.ExecuteNonQuery()
End Sub

我不熟悉Access,所以我首先只是把它作为评论发布。但听起来很合理。您应该将“自动编号”字段设置为当前最大值+1

ALTER TABLE TableName ALTER COLUMN AutoNumFieldName COUNTER(iMaxID,1); 

值得一试。我不知道它为什么能工作。

如果不测试你的数据库,我不能确定,但是这条线

Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (department, name_first, name_last, prefix, course_number) VALUES (?, ?, ?, ?, ?)", myConn)
似乎最好是:

Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (department, name_first, name_last, prefix, course_number) VALUES (?, '?', '?', '?', ?)", myConn)
换句话说,字符串应该是单引号,发送的数字不带引号

除此之外,这个特定的插入看起来应该可以工作,但是tableCourse和另一个表之间可能存在关系,引用完整性可能会从相关表生成错误


换言之,看看你的“关系”。

以毫秒为单位重新设定表格的顺序对我不起作用。需要将旧的唯一索引更改为数字字段,并添加一个全新的唯一索引。幸运的是,该索引没有链接到其他表,如果是这样的话,这将是一个巨大的集群,因为您无法将值导入字段,然后将该字段转换为自动编号,以方便自动创建索引。

是否尝试过。在生成命令之前打开连接?猜猜看:看看这篇文章:您应该将“自动编号”字段设置为当前最大值+1。ALTER TABLE TableName ALTER COLUMN AutoNumFieldName COUNTERiMaxID,1;我怀疑引用的东西会导致这种错误,但我可以试试。我的数据库中还没有任何关系,因为我现在正在测试它……问题是,我没有自动编号,前缀和课程号是我的主键字段。但我输入的数据与已经存在的数据不同,每次输入的数据都不一样。