Sql server 提供的列名称或值数与表定义不匹配-无法确定根本原因

Sql server 提供的列名称或值数与表定义不匹配-无法确定根本原因,sql-server,vb.net,visual-studio,visual-studio-2010,vb.net-2010,Sql Server,Vb.net,Visual Studio,Visual Studio 2010,Vb.net 2010,获取错误信息 cmd.ExecuteNonQuery() 我当前的代码 Using con As New SqlConnection(sConString) Using cmd As New SqlCommand( "INSERT INTO MC_Entry VALUES(" & "@0,@1, @2, @3, @4, @5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17," & "@

获取错误信息

cmd.ExecuteNonQuery()

我当前的代码

Using con As New SqlConnection(sConString)
    Using cmd As New SqlCommand(
        "INSERT INTO MC_Entry VALUES(" &
        "@0,@1, @2, @3, @4, @5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17," &
        "@18, @19, @20, @21, @22,@23,@24,@25,@26,@27,@28,@29,@30,@31,@32,@33,@34," &
        "@35, @36, @37, @38, @39,@40,@50,@51,@52,@53,@54)", con)

        For MyIncremental = 0 To 54
            cmd.Parameters.AddWithValue("@" & MyIncremental, vValues(MyIncremental))
        Next MyIncremental

        'Debug.Print(UBound(vValues))
        'Debug.Print(LBound(vValues))
        'Debug.Print(Join(vValues, vbTab))


        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
    End Using
End Using
V值的下限值=0

V值的上限值=54

我的SQL server表中有55列,没有增量字段,每个字段都可以接受空值

不知道为什么我会有这个错误,因为一切似乎都很好

提供的列名称或值数与表定义不匹配。

For i = 0 To 54
    ReDim Preserve sfields(0 To i)
    sfields(i) = "@" & i
Next

sConcat = Join(sfields, ",")

Using con As New SqlConnection(sConString)
    Using cmd As New SqlCommand("INSERT INTO MC_Entry VALUES(" & sConcat & ")", con)

        For i = 0 To 54
            cmd.Parameters.AddWithValue("@" & i, vValues(i))
        Next i

        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
    End Using
End Using
有什么建议吗

根据答题帖,我终于把它做成了循环,这样我以后就不会错过必要的字符串了。

For i = 0 To 54
    ReDim Preserve sfields(0 To i)
    sfields(i) = "@" & i
Next

sConcat = Join(sfields, ",")

Using con As New SqlConnection(sConString)
    Using cmd As New SqlCommand("INSERT INTO MC_Entry VALUES(" & sConcat & ")", con)

        For i = 0 To 54
            cmd.Parameters.AddWithValue("@" & i, vValues(i))
        Next i

        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
    End Using
End Using

表中总共有55列,您缺少从
@41
@49
的参数,这导致了错误

包含如下内容将解决您的问题

"INSERT INTO MC_Entry VALUES(" &
"@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17," &
"@18, @19, @20, @21, @22, @23, @24, @25, @26, @27, @28, @29, @30, @31, @32, @33," &
"@34, @35, @36, @37, @38, @39, @40, @41, @42, @43, @44, @45, @46, @47, @48, @49," &
"@50, @51, @52, @53, @54)", con)

您是否错过了
@41
@49
的值?您是对的。。。不知道我怎么会错过那部分。现在它工作得很好。我在循环中做了它,以避免将来丢失字符串的问题。更新了我最初的帖子:)谢谢你的快速解决方案和评论:)@Sixthsense很高兴能提供帮助,如果我专注于某项任务而没有休息,我也会遇到这种情况。休息一下。干杯:)真的。目前正在使用多个项目环境,这可能是原因。