1

Получение ошибки наColumn или число предоставленных значений не соответствует определению таблицы - Невозможно определить причину

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 

Нижнее значение vValues ​​= 0
и
Upperbound V alue of vValues ​​= 54

У меня есть 55 столбцов в моей таблице SQL-сервера с NO Инкрементное поле, и каждое поле может принимать значение Null.

Не знаю, почему я получаю эту ошибку, так как кажется, что все будет хорошо ...

Имя столбца или количество предоставленных значений не соответствует определению таблицы.

Любые предложения?

Основываясь на ответе, я, наконец, сделал это в цикле, чтобы в будущем я не пропустил необходимые строки.

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 
+1

Вы пропустили '@ 41' для' @ 49' значений? – Arulkumar

+0

Вы правы ... Не знаете, как я пропустил эту часть. Теперь он работает нормально. – Sixthsense

+0

Я сделал это в цикле, чтобы избежать недостающей строки в будущем. Обновлено то же самое в моем начальном посте :) – Sixthsense

ответ

1

Всего у вас есть 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) 
+0

Спасибо за ваше быстрое решение и обзор :) – Sixthsense

+0

@Sixthsense Рад помочь, это случается со мной, если я сосредоточусь на конкретной задаче без перерыва. Сделайте перерыв. Cheers :) – Arulkumar

+0

Правда. В настоящее время работает с несколькими проектными средами, которые могут быть причиной. – Sixthsense

Смежные вопросы

 Смежные вопросы