none
Mostrar 2 datos de una base de datos en un label RRS feed

  • Pregunta

  • Como extraigo 2 datos de una tabla en sql server, estos datos los ingreso desde 2 textbox, los datos siempre son iguales y quiero traerlos desde la base de datos, utilizo programación en 3 capas y no tengo idea de como pasarlos de capa en capa para llegar a mi capa presentación y mostrarlo en un label, y aparte si estos datos llegan a cambiar mostrar los nuevos que se ingresaron, ¿no se si hay alguna funcion que me agarre el ultimo dato de una base de datos?

    jueves, 5 de marzo de 2020 21:50

Todas las respuestas

  • Hola Nathaly

    Las bases de datos tienen tablas, y cada tabla tiene columnas o campos, con nombre y tipo de datos, y filas, que son quienes verdaderamente contienen los datos, uno por cada campo y del tipo que es.

    Cuando decis que queres extraer 2 datos de la base de datos, no se a cuales datos te referis, pero la forma de obtener los datos es con la sentencia SELECT del lenguaje Transact-SQL. Te recomiendo leer en Internet un tutorial básico de T-SQL, y aprenderte los comandos básicos: SELECT, INSERT, UPDATE, y DELETE, para tener una mejor noción de como son y como juegan los datos de las bases de datos.

    Para pasar los datos de una capa a otra y mostrarlos en un TextBox, simplemente, en la capa de presentación, llamas al método (escrito en la capa de lógica de negocio, que lee los datos de la capa de datos) que recupera los datos. Usualmente es un método que devuelve un List<objeto>. 

    Si pudieras especificar un poco más en concreto qué es lo que tenes que hacer, quizás te puedo ayudar más.

    Saludos

    Pablo

    jueves, 5 de marzo de 2020 22:18
  • hola

    No se como tienes la estructura del codigo o como accedes a la base de datos, pero podrias usar de base

    [WinForms] Edición Empleados

    analiza del articulo como diseño la capa de datos usando clases y listas para retornar los datos

    Entonces si defines una clase

    podrias recuperar los datos de la tabla y retornarlos con esa clase pasandola entre las capas

    public class xxClass{
    
        public string dato1 {get;set;}
        public string dato2 {get;set;}
    
    }

    algo como ser

    public xxClass ObtenerDatos()
    {
    	string connstring = "connection string";  
    	using (SqlConnection cn = new SqlConnection(connstring)) {  
    		cn.Open();  
    	 
    		string sql = "SELECT campo1, campo2, campo3 FROM Tabla WHERE id =@id";  
    		SqlCommand cmd = new SqlCommand(query, cn);  
    		cmd.Parameters.AddwithValue("@id", Convert.Toint32(txtId.Text));  
    	 
    		SqlDataReader reader = cmd.ExecuteReader();  
    	 
    		xxClass item = new xxClass();
    		if (reader.Read())  
    		{  
    			item.dato1 = Convert.ToString(reader["campo1"]);  
    			item.dato2 = Convert.ToString(reader["campo2"]);   
    		} 
    
    		return item;
    	} 
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 5 de marzo de 2020 22:19
  • Hola Pablo gracias por responder, te explico tengo una tabla llamada Secuencia, tiene la siguiente estructura

    IdSecuencia Negocio Serie Secuencia
    1 001 001 000000001
    2 001 001 000000002
    3 001 001 000000003

    como ves Negocio y Serie tienen los mismos datos 001

    1.- quisiera saber ¿Como puedo mostrar la columna Negocio y Serie en un label?

    se que existe la sentencia select, pero no se como realizarlo en 3 capas, uso procedimientos almacenados para insertar los valores, ellos se insertan desde un textbox y luego quiero recuperar esas dos columnas, ya que la tabla Secuencia es autoincrementable en una funcion en sql. Entonces no se como recuperarlos.

    2.- mi otra pregunta es que en caso de que ocurra esto: cualquiera de los 3 casos, hay una manera de que me agarre la ultima fila?

    dSecuencia Negocio Serie Secuencia
    4 003 001 000000001
    5 001 002 000000001
    6 002 002 000000001

    Y que si una de las dos columnas cambia, poder traer ese ultimo dato que se ingreso? Hay una posibilidad?

    jueves, 5 de marzo de 2020 23:17
  • Gracias Leandor por responder, pero no se como aplicarlo en 3 capas
    jueves, 5 de marzo de 2020 23:18
  • hola

    >>Pero no se como aplicarlo en 3 capas

    pero analizaste el articulo que propuse ?

    decir que no sabes sin hacer un minimo esfuerzo para tratar de entender no veo como vas a poder resolverlo, desde el foro podemos guiarte pero despues una parte va a depender de ti

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 5 de marzo de 2020 23:34
  • hola

    quisiera saber ¿Como puedo mostrar la columna Negocio y Serie en un label?

    porque no intentas primero resolverlo sin capas para ver como sale y depues puede convertir eso a clases como en la respuesta que proporcione

    Para trabajar en capas debes conocer sobre POO (Programacion Orientada a objetos) para poder instanciar clases y listas que uses para pasar datos entre las capas

    >>si una de las dos columnas cambia, poder traer ese ultimo dato que se ingreso?

    podrias usar la query

    SELECT TOP 1 * FROM NombreTabla ORDER BY idSecuencia DESC

    asi tomarias el ultimo registro de la tabla

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 5 de marzo de 2020 23:38
  • Hola

    Lo que queres es mostrar los datos Negocio y Serie en 2 Label, los últimos ingresados en la tabla? (Se usa más el TextBox, pero usamos Label, que se escribe igual, en su propiedad Text)

    La consulta que hay que usar es la que te pasó Leandro, dentro de un SqlCommand, y leer los datos con un SqlDataReader.

    string consulta = "SELECT TOP 1 Negocio, Serie FROM Secuencia ORDER BY IdSecuencia DESC";
    SqlCommand comando = new SqlCommand(consulta, conexion);
    conexion.Open();
    SqlDataReader lector = comando.ExecuteReader();
    if (lector.HasRows)  // compruebo que haya una fila, si la hay será una sola
        lector.Read();   // por eso hago un único Read()
    conexion.Close();
    label1.Text = lector.GetString(0);  // entiendo que Negocio
    label2.Text = lector.GetString(1);  // y Serie son string

    Tendrías que repetir este código cada vez que insertas una nueva fila en la tabla Secuencia

    Saludos

    viernes, 6 de marzo de 2020 2:19