Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 必须声明标量变量错误ADO.NET_C#_Sql - Fatal编程技术网

C# 必须声明标量变量错误ADO.NET

C# 必须声明标量变量错误ADO.NET,c#,sql,C#,Sql,所以,我有我的更新和它给我这个字符串错误。我已经尝试过在没有参数的情况下使用连接方式,我尝试过更改参数顺序并对null进行验证,但仍然返回错误 对于那些提出要求的人。标题“必须声明标量变量“@Apellido”中的错误 这是全部代码: using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand command = new OleDbCommand(); OleD

所以,我有我的更新和它给我这个字符串错误。我已经尝试过在没有参数的情况下使用连接方式,我尝试过更改参数顺序并对null进行验证,但仍然返回错误

对于那些提出要求的人。标题“必须声明标量变量“@Apellido”中的错误

这是全部代码:

using (OleDbConnection connection = new OleDbConnection(connectionString))
{
    OleDbCommand command = new OleDbCommand();
    OleDbTransaction transaction = null;

    // Set the Connection to the new OleDbConnection.
    command.Connection = connection;

    // Open the connection and execute the transaction. 
    try
    {
        connection.Open();
        command.CommandText = "UPDATE Asociados SET Apellido=@Apellido, Nombre=@Nombre, FechaNacimiento=@FechaNacimiento, Comentarios=@Comentarios, DNI=@DNI, ParcelaID=@ParcelaID, FechaIngreso=@FechaIngreso, Nacionalidad=@Nacionalidad, EstadoCivil=@EstadoCivil, Profesion=@Profesion, DomicilioComercial=@DomicilioComercial, TelefonoComercial=@TelefonoComercial, Celular=@Celular, Email=@Email, Patente1=@Patente1, Patente2=@Patente2, Patente3=@Patente3, Domicilio=@Domicilio, Telefono=@Telefono, Localidad=@Localidad, CodigoPostal=@CodigoPostal, Referente=@Referente, Saldo=@Saldo, FechaBaja=@FechaBaja WHERE ID=@ID";
        command.Parameters.AddWithValue("@ID", ((object)AsociadoModificado.ID) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Apellido", AsociadoModificado.Apellido.ToString());
        command.Parameters.AddWithValue("@Nombre",AsociadoModificado.Nombre.ToString());
        command.Parameters.AddWithValue("@FechaNacimiento",Convert.ToDateTime(AsociadoModificado.FechaNacimiento).Date);
        command.Parameters.AddWithValue("@Comentarios", AsociadoModificado.Comentarios.ToString());
        command.Parameters.AddWithValue("@DNI", ((object)AsociadoModificado.DNI) ?? DBNull.Value);
        command.Parameters.AddWithValue("@ParcelaID", ((object)AsociadoModificado.ParcelaID) ?? DBNull.Value);
        command.Parameters.AddWithValue("@FechaIngreso", ((object)Convert.ToDateTime(AsociadoModificado.FechaIngreso).Date) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Nacionalidad", ((object)AsociadoModificado.Nacionalidad) ?? DBNull.Value);
        command.Parameters.AddWithValue("@EstadoCivil", ((object)AsociadoModificado.EstadoCivil) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Profesion", ((object)AsociadoModificado.Profesion) ?? DBNull.Value);
        command.Parameters.AddWithValue("@DomicilioComercial", ((object)AsociadoModificado.DomicilioComercial) ?? DBNull.Value);
        command.Parameters.AddWithValue("@TelefonoComercial", ((object)AsociadoModificado.TelefonoComercial) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Celular", ((object)AsociadoModificado.Celular) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Email", ((object)AsociadoModificado.Email) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Patente1", ((object)AsociadoModificado.Patente1) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Patente2", ((object)AsociadoModificado.Patente2) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Patente3", ((object)AsociadoModificado.Patente3) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Domicilio", ((object)AsociadoModificado.Domicilio) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Telefono", ((object)AsociadoModificado.Telefono) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Localidad", ((object)AsociadoModificado.Localidad) ?? DBNull.Value);
        command.Parameters.AddWithValue("@CodigoPostal", ((object)AsociadoModificado.CodigoPostal) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Referente", ((object)AsociadoModificado.Referente) ?? DBNull.Value);
        command.Parameters.AddWithValue("@Saldo", ((object)AsociadoModificado.Saldo) ?? DBNull.Value);
        command.Parameters.AddWithValue("@FechaBaja", ((object)AsociadoModificado.FechaBaja) ?? DBNull.Value);
        command.ExecuteNonQuery();
        connection.Close();
    }
    catch(Exception e)
    {
    }
}

顺序计数,您的ID在CommandText中的最后一个,在参数赋值中的第一个

您使用的是
OleDbCommand
,就像使用
SqlCommand
一样。命名参数(例如:
@Apellido
)在
SqlCommand
中使用。对于
OleDbCommand
,必须使用位置占位符

看看这个:


此外,它已被删除。:)

提供错误文本将是一个良好的开端。tooth.Pull(1)。@SamAxe,因为您可以猜到错误消息的标题。“必须声明标量变量%/Apellido/%:)缩小范围,简化为一个参数查询,然后再次测试。我希望您复制/粘贴该错误文本,因为您显然无法确定键入的内容。请再次查看标题。无论如何,此错误最常见的原因是拼写错误(因此复制/粘贴在此处很重要)在SQL或Parameters.AddWithValue calls中。另外,这是在与什么DBMS对话?是的,只是为了测试而更改了它。应该没关系,因为我声明了“@varname”“尽管如此,无论我不能让它工作的顺序是什么,我都尝试过查询顺序、数据库顺序,而不是特定的顺序。什么都不起作用。这就是为什么错误必须出现在帖子中,这样索引器才能找到它。由于select与命名参数一起工作,所以现在它的工作效率非常低。谢谢你,安德烈。