La consulta espera el parametro @Nombre que no se ha proporcionado

public bool IngresarUsuario(Prueba objeto)
{
    using (SqlConnection cn = Conexion.Conectar("cadenaCon"))
    {

        try
        {
            cn.Open();
            query = ("insert into Pruebas (Id,Nombre,Componente)values (@Id,@Nombre,@Componente)");
            comando = new SqlCommand(query);
            comando.CommandType = CommandType.Text;
            comando.Connection = cn;
            comando.Parameters.AddWithValue("@Id", objeto.Id);
            comando.Parameters.AddWithValue("@Nombre", objeto.Nombre);
            comando.Parameters.AddWithValue("@Componente", objeto.Componente);
            if (Convert.ToBoolean(comando.ExecuteNonQuery()))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        finally { cn.Close(); }
    }
}
1
задан 08.11.2016, 20:34
2 ответа

Эта ошибка происходит, когда стоимость, которую ты перемещаешь его в SqlCommand.AddWithValue() он null.

В этом случае, objeto.Nombre должен будь быть в null, и возможно это не было твоим намерением. Убедись, которого objeto.Nombre имейте действительную стоимость.

Итак, если твое намерение действительно состоит в том, чтобы вводить недействительно для @Nombre когда objeto.Nombre он null, тогда этого могут добиваться так:

comando.Parameters.AddWithValue("@Nombre", (object)objeto.Nombre ?? DBNull.Value);
3
ответ дан 24.11.2019, 12:41

Я рекомендую тебе занимать следующий способ:

string query = "INSERT INTO Pruebas (Id,Nombre,Componente) VALUES (@Id,@Nombre,@Componente);
SqlCommand command = new SqlCommand(query , cn);
command.Parameters.Add("@Nombre", SqlDbType.VarChar, 100);
command.Parameters["@Nombre"].Value = objecto.Nombre;
command.Parameters.Add("@Id", SqlDbType.Int);
command.Parameters["@Id"].Value = objecto.Id;
command.Parameters.Add("@Componente", SqlDbType.VarChar, 100);
command.Parameters["@Componente"].Value = objecto.Componente;
cn.Open();
command.ExecuteNonQuery();
0
ответ дан 24.11.2019, 12:41