Usuario
Mostrar 2 datos de una base de datos en un label

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?
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
-
hola
No se como tienes la estructura del codigo o como accedes a la base de datos, pero podrias usar de base
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 -
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?
-
-
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- Editado Leandro TuttiniMVP viernes, 6 de marzo de 2020 13: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 -
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
- Propuesto como respuesta Óscar NavarroModerator viernes, 6 de marzo de 2020 14:14