Foros del Web » Programación para mayores de 30 ;) » .NET »

Capturar ID con consulta SQL C#

Estas en el tema de Capturar ID con consulta SQL C# en el foro de .NET en Foros del Web. Buenas, quizas es algo sencillo lo que les pregunto pero me estoy metiendo en C# con mis conocimientos en php, y hay algunas cosas distintas. ...
  #1 (permalink)  
Antiguo 27/04/2015, 19:26
 
Fecha de Ingreso: abril-2015
Mensajes: 2
Antigüedad: 8 años, 11 meses
Puntos: 0
Pregunta Capturar ID con consulta SQL C#

Buenas, quizas es algo sencillo lo que les pregunto pero me estoy metiendo en C# con mis conocimientos en php, y hay algunas cosas distintas.

Lo que quiero es mediante una consulta capturar el ID de la tabla Usuario segun algunas restricciones. He podido utilizar el ID de varias maneras pero nunca capturarla dentro de otro variable int, segun lo que entiendo es porque estoy trabajando la consulta como una cadena de caracteres. Probando varias cosas he guardado este resultado como string pero me guarda la consulta completa (no se si se entiende).

Dejo un ejemplo de como he utilizado este ID en otra consulta. Lo que hago es capturar la ID y segun esta en el codigo del windows form mostrarle cierto menu, algo asi como perfil de usuario.

Código:
public bool Buscar()
        {
            bool resultado = false;
            this.sql = string.Format(@"SELECT idUsuario FROM Usuario WHERE username='{0}' AND password='{1}'", this.user, this.contraseña);
            this.comandosql = new SqlCommand(this.sql, this.conn);
            this.conn.Open();
            SqlDataReader Reg = null;
            Reg = this.comandosql.ExecuteReader();
            if (Reg.Read())
            {
                resultado = true;
                this.mensaje = "Usuario valido, Bienvenido al Sistema";
            }
            else
            {
                this.mensaje = "Datos incorrectos, por favor ingrese un usuario valido";
            }

            this.conn.Close();
            return resultado;

        }
Lo que quiero es hacer el mismo select, pero esta ID guardarla dentro de una variable int

De antemano muchas gracias, cualquier cosa que no se entienda me lo dicen
  #2 (permalink)  
Antiguo 28/04/2015, 00:56
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Capturar ID con consulta SQL C#

Dale un vistazo a GetIn32 ;)
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 28/04/2015, 03:46
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 2 meses
Puntos: 52
Respuesta: Capturar ID con consulta SQL C#

Por cierto, lo que te recomienda Malenko es la "salida rápida" para que logres hacer funcionar tu código así como está. Pero a decir verdad, ya que venís de otro "palo" (es decir de otra tecnología con otra filosofía) te conviene que alguien te advierta lo siguiente:

A diferencia de PHP, .NET es una tecnología moderna, robusta, de nivel profesional y diseñada por expertos.

Por esta razón, encarar .NET con una mentalidad de PHP es un error, desde el vamos.
Todo el código que posteaste es considerado una mala práctica en C#.

Tu código tiene una seria vulnerabilidad a cualquier ataque de inyección de SQL. Es decir, cualquier persona con un poco de conocimiento te puede romper toda la base de datos, desde afuera, muy facilmente y en 5 minutos.

Además de eso, poner las instrucciones de SQL como strings en el código era lo que hacíamos en 1989 con Visual Basic 5. Hoy por hoy lo que se hace profesionalmente es usar un ORM como Entity Framework o NHibernate.

Además de todo esto, si estás autentificando o autorizando usuarios te convendría no tratar de reinventar la rueda que ya está inventada. .NET tiene mecanismos de autentificación y autorización bien armados.

Por último, y esto es algo que seguramente jamás te encontraste en PHP, en .NET se recomienda armar una arquitectura prolija y coherente para trabajar, seguir las buenas prácticas, armar capas independientes y poner cada componente y cada funcionalidad en una capa correspondiente y bien definida, en lugar de poner cualquier cosa en cualquier lado y trabajar de cualquier forma "total funciona igual". Esa mentalidad de "total funciona igual" de PHP hace que el resto de la comunidad informática vea a la comunidad de PHP como un ghetto (sin ofender).

Te conviene separar el código de acceso a datos y armar una capa de acceso a datos como corresponde, usar Entity Framework como corresponde, y armar un modelo de objetos fuertemente tipado como corresponde, que represente el dominio de tu aplicación con una estructura bien definida como corresponde, en lugar de manejar todo con textos y números mágicos y hacer una galleta de código horrible como en PHP.

Última edición por agleiva; 28/04/2015 a las 04:28
  #4 (permalink)  
Antiguo 28/04/2015, 12:51
Avatar de cbretana  
Fecha de Ingreso: junio-2013
Ubicación: Pinar del Rio
Mensajes: 55
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Capturar ID con consulta SQL C#

Si, tambien te lo recomiendo, no obstante, si lo quieres hacer asi de esa forma, puedes usar DataTables, y con referirte a la columna 0 en el DataRow, ya obtienes el resultado como string, y despues lo parseas a int, y lo obtienes, ahora, si quieres mantener este punto de vista de ejecutar queries de sql, puedes usar Linq2SQL, y resolver esto de las consultas con Stored Procedures, es solo una sugerencia, cada cual tira su codigo y nadie le puede decir de que forma hacerlo
__________________
.::Una imagen vale mas que mil palabras::.
  #5 (permalink)  
Antiguo 29/04/2015, 08:28
 
Fecha de Ingreso: abril-2015
Mensajes: 2
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Capturar ID con consulta SQL C#

Se aceptan todo tipo de sugerencias, tengo conocimientos basicos en C#, ASP.NET, ADO.NET. En php y java es donde tengo mas conocimiento tengo programando objetos y en capas (lo que aprendemos en la universidad, nunca he trabajado como programador), solo trate de trasladar esos conocimientos a C# para sentirme lo mas comodo posible. Quizas no se nota aqui pero por lo menos si estoy trabajando en capas, creo que es un paso xD. Voy a averiguar algo sobre EF y NHibernate ya lo he utilizado alguna vez.

Y sobre la pregunta que hice, intente el convert con int32 antes de postear aqui pero no me funciono :(

Etiquetas: sql, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:50.