none
Traer el id de un registro a partir de su nombre RRS feed

  • Pregunta

  • Tengo el nombre de un registro recibido por parametro, lo que quiero hacer es traer su clave primaria.
    Lo intente asi,
    string sql = "SELECT Codigo FROM PlanC WHERE Nombre = ";
    sql += nombre;

    Codigo (Nombre de la columna donde esta el id que quiero recuperar)
    PlanC (Nombre de la tabla)
    nombre (Es el nombre del elemento recibido por parametro)
    He probado con algunas variantes con LIKE y sin poner Nombre = pero siempre me da error. Me podrian decir como seria la forma correcta de hacerlo. Gracias
    sábado, 26 de diciembre de 2009 15:57

Todas las respuestas

  • Hola te diriá que lo hicieras de esta manera:

    SqlCommand cmd=new SqlCommand("SELECT CODIGO FROM PlanC WHERE Nombre=@Nombre",tuConexion); 
    cmd.Parameters.AddWithValue("@Nombre",nombre);
    y ejecutes el comando para ver el resultado.

    Por otro lado, haces distincion de mayusculas y minusculas??? si es asi deberias hacer un Upper o un Lower y convertir ambos valores para comprobarlo...

    Espero que te sirva.

    Si la respuesta te ha sido util Marcala como Respuesta o Votala.
    Mi Blog: Jtorrecilla
    sábado, 26 de diciembre de 2009 16:12
    Moderador
  • hola

    programas en c# o vb.net ?
    es bueno simpre aclatrar en que lenguaje programas y que version de VS estas utilizando VS2005, VS2008

    - que base de datos estas utilizando, sql server, Ms Access, MySql ?
    es bueno tambien indicar que db usas, de esta forma al armar un ejemplo se puede hacer con los nombre de las clases correctos


    igualmente arme un ejemplo generico, en donde use vb.net y supuse que la db es sql server

    Try

        Using cnn As SqlConnection = New SqlConnection("connection string")

            Dim sql As String = "SELECT CODIGO FROM PlanC WHERE Nombre = @Nombre"
            Dim cmd As SqlCommand = New SqlCommand(sql, cnn)
           
            cmd.Parameters.AddWithValue("Nombre", txtNombre.Text)
           
            Dim reader As SqlDataReader = cmd.ExecuteReader()
       
            If reader.Read() Then
              txtCodigo.Text = CStr(reader("CODIGO"))
            End If
           
        End Using
       
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try


    sino es esto lo que usas puede aclararlo y vemos de modificar el ejemplo

    en este el nombre se compara de forma exacta ya que usa el =, si necesitas usar el like la cosa cambia ya que puede retornar un conjunto de elemento que coincidan con la busqueda, o sea no sera un solo registro, pero por lo que comentas no es el caso

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 26 de diciembre de 2009 16:35