Significa que la cantidad de valores especificados en su VALUES
cláusula en INSERT
declaración no es igual al número total de columnas en la tabla. Debe especificar el nombre de la columna si solo intenta insertar en las columnas seleccionadas.
Otro, ya que estás usando ADO.Net
, siempre parametrizó su consulta para evitar SQL Injection
. Lo que estás haciendo ahora mismo es derrotar el uso de sqlCommand
.
ex
Dim query as String = String.Empty
query &= "INSERT INTO student (colName, colID, colPhone, "
query &= " colBranch, colCourse, coldblFee) "
query &= "VALUES (@colName,@colID, @colPhone, @colBranch,@colCourse, @coldblFee)"
Using conn as New SqlConnection("connectionStringHere")
Using comm As New SqlCommand()
With comm
.Connection = conn
.CommandType = CommandType.Text
.CommandText = query
.Parameters.AddWithValue("@colName", strName)
.Parameters.AddWithValue("@colID", strId)
.Parameters.AddWithValue("@colPhone", strPhone)
.Parameters.AddWithValue("@colBranch", strBranch)
.Parameters.AddWithValue("@colCourse", strCourse)
.Parameters.AddWithValue("@coldblFee", dblFee)
End With
Try
conn.open()
comm.ExecuteNonQuery()
Catch(ex as SqlException)
MessageBox.Show(ex.Message.ToString(), "Error Message")
End Try
End Using
End USing
PD:cambie los nombres de columna especificados en la consulta a la columna original que se encuentra en su tabla.