El articulo trata sobre como guardar los datos de una consulta a una bd en variables para luego poder hacer validaciones con los datos obtenidos.
El articulo lo explico en C# pero al final pueden descargar el proyecto en C# y VB.NET
La base de datos que usare para este ejemplo se llama Personas y cuenta con una tabla Persona y con los campos id, nombre, apellido y edad.
El ejemplo consistirá en introducir un nombre y si el registro se encuentra en la bd guardare el apellido y edad en 2 variables y luego comparare si la persona es mayor de edad o no lo es.
Bueno empecemos lo primero sera agregar una clase a nuestro proyecto que le llamaremos Datos.cs y tendrá el siguiente código.
public static class Datos { public static DataTable Buscar(string nombre) { DataTable dt = new DataTable(); SqlConnection conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString());//cadena conexion string consulta = "SELECT id,apellido,edad FROM PERSONA WHERE nombre=@nombre"; //consulta SqlCommand comando = new SqlCommand(consulta, conexion); comando.Parameters.AddWithValue("@nombre",nombre); SqlDataAdapter adap = new SqlDataAdapter(comando); adap.Fill(dt); return dt; } }
Linea 3 Creamos un método de tipo DataTable llamado Buscar que recibirá un parámetro que sera el dato a buscar en la bd.
Linea 9 Creamos una consulta para obtener los datos de la tabla en este caso apellido y edad.
Linea 12 Enviamos el parámetro en base al cual obtendremos los datos de la tabla.
Importante en el código de la clase anterior agregar los siguientes espacios de nombres.
using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Windows.Forms;
En nuestro formulario tendremos el siguiente diseño.
Y el código que tendremos en el evento click de nuestro botón sera el siguiente.
//variables para guardar los datos de la bd int edad; string apellido; private void btnbuscar_Click(object sender, EventArgs e) { DataTable dt = Datos.Buscar(textBox1.Text);//envio dato a buscar //si encuentra el dato guardo los datos en las variables if (dt.Rows.Count > 0) { DataRow row = dt.Rows[0]; //guardo datos en variables apellido = Convert.ToString(row["apellido"]); edad = Convert.ToInt32(row["edad"]); if(edad>=18)//valido si es mayor de edad MessageBox.Show(textBox1.Text+" "+ " "+apellido+" "+"Es Mayor de Edad" ,"Registro"); else MessageBox.Show(textBox1.Text + " " + " " + apellido + " " + "Es Menor de Edad", "Registro"); } else MessageBox.Show("No Existe","Registro"); }
Linea 2 y 3 Declaramos las 2 variables donde guardaremos los datos de nuestra consulta.
Linea 8 Llamamos nuestro método Buscar y le pasamos el parámetro del dato que queremos buscar.
Linea 14 y 15 Guardo los datos de la consulta en las varariables
Linea 17 y 18 Valido si la edad es mayor que 18 e imprimo los datos.
Linea 19 y 20 No es mayor de edad imprimo los datos.
Eso seria todo captura de la aplicación corriendo.
Si quieren donarme para una soda lo pueden hacer aqui.
21 Comentarios
Cristian:
ResponderEliminarMuy bueno tu blog.. y gracias por el trabajo que te tomas para explicar estas cosas..
Yo solo soy un aficionado que cada vez le encuentra mayor gusto a programar (en realidad soy entrenador de Ajedrez en Peru)
Tengo una duda (de varias): ¿Como haces para cargar una base de datos a la aplicacion?
Es decir si deseo llevar mi aplicacion en vb a otra pc (ambas tienen instaladas sql server) ¿cómo hago para que la aplicacion se lleve consigo la base de datos?
Tengo la aplicacion trabajandola en mi casa pero deseo llevarlo a mi centro de labores para seguir avanzando con él...
Gracias desde Peru..
Mi blog es
http://ajedrezsag.blogspot.com/
y mi correo:
carjavurlo@hotmail.com
Hola saludos.
EliminarDices que ambas pc tienen instalado sql server pues lo único que deberÃas hacer es copiar la base de datos en una usb te la llevas a la otra pc y la adjuntas al sql server.
Adjuntar base de datos en sql server
¿Y la aplicacion automaticamente encontrará en la segunda PC a la base de datos?
ResponderEliminarParece simple...
Si lo único que tendrÃas que cambiar en tu cadena de conexión es el nombre del servidor aunque no creo que sea necesario ya que si en los 2 tienes el mismo sql server con un punto indicarias el servidor de manera local Data Source=.
EliminarEn una PC (en la que esta la aplicacion VB) tengo SQL Server 2008 Studio R2. Y en la otra tengo SQL Server 2008 Express...
Eliminar¿hago la operacion con Data Source=.? ¿Ã“ tengo que hacerlo diferente?
Gracias Cristian y disculpa las molestias...
Entonces seria asà Data Source=.\SQLEXPRESS
EliminarCristian:
ResponderEliminarAnte todo mil disculpas por quizas importunarte por esta nueva consulta..
Diseñé un procedimiento en SQL SERVER 2008 sencillo para insertar datos. El procedimiento genera la Clave Primaria de una tabla (es decir yo no ingreso los datos en la columna que servira como clave primaria, el procedimiento lo creará)
Ejecuto el procedimiento en el entorno SQL SERVER y no tengo ningun problema....
El problema ocurre cuando corro la aplicacion en VB (Visual Studio 2008) en el form Ajedrecistas que ejecuta el Procedimiento SQL mencionado..
No se que pasa...
Mucho te agradeceria si pudieras ayudarme en esta consulta...
Dejo en el enlace SkyDrive (archivo Word) las imagenes que serviran mejor para sustentar el problema...
https://skydrive.live.com/?cid=eb4b0f99ab737605#!/view.aspx?cid=EB4B0F99AB737605&resid=EB4B0F99AB737605!205
Y has probado insertar mas de un registro con tu procedimiento desde el sql server para salir de la duda que no sea problema del procedimiento, viendo el error que te muestra es como que no le pasa los parametros a tu procedimiento por eso te muestra el error no ejecutes el código para limpiar los textbox y pruebalo.
EliminarFinalmente encontré la solucion:
EliminarTodo el problema sucede en el entorno del VB... en SQL no habia ningun problema...
Lo que sucedia con mi procedimiento era que primero se cargaban los registros secundarios que generarian el registro principal (columna Primary Key) y alli aparecia el error. Siempre en "IdAjedrecista" estaba el problema.
Aqui esta pagina da la solucion:
http://msdn.microsoft.com/es-es/library/s3bxwk8b%28v=vs.80%29.aspx
Y acontinuacion hice exactamente lo que se indica bajo estas lÃneas:
"Para suspender las restricciones de actualización mediante el Diseñador de DataSet
Abra el conjunto de datos en el Diseñador de DataSet. Para obtener más información, vea Cómo: Abrir un objeto Dataset en el Diseñador de Dataset.
Establezca la propiedad EnforceConstraints en false en la ventana Propiedades"
Efectivamente en mi caso estaba en TRUE (por defecto se establece asÃ) Realicé el cambio y ahora marcha muy bien..
Gracias de todas formas por el interes mostrado en mi caso...
Que bien que resolviste tu problema
EliminarSaludos
bien pibe es un buen algoritmo y funciona barbaro...
ResponderEliminarHola.
ResponderEliminarMe alegro que te sirviera.
Saludos.
hola que buena aportacion, me gustaria q me ayudaras con algo,
ResponderEliminarquisiera saber como migrar datos de una base de datos a otra, cada BD tiene una tabla y se deben enviar los datos de una tabla a otra en c#
Hola Tatiana.
ResponderEliminarPuedes usar la Inserción multiple de filas.
Insertar datos.
Ahà podrás ver como consultar una tabla y el resultado insertarla en otra usando la inserción múltiple.
Saludos.
Muy interesante tu blog... gracias por el aporte y el tiempo que te tomaste en transmitir tus conocimientos... :)
ResponderEliminarVanessa de Perú
Hola Vanessa espero mi blog te sirva en algo.
ResponderEliminarY mas interesante ver a una mujer interesada en esta área de programación :)
Saludos.
ola disculpen
ResponderEliminarquisiera ver si me pueden ayudar, lo que pasa soy nueva en la programación estoy trabajando con C# asp.net visual studio 2010 y sql server 2005, tengo una tabla q se llama servicio en la cual tengo los siguientes datos:
Personal....int
equipo.....int
estos datos los tengo en Int ya que estan relacionados con ottras tablas y en visual studio tengo un 2 Textbox y un button, en los que en los textbox ingreso datos con valor nvarchar y a la hora de guardar quiero que guarde los Id de esos datos.
Ojala me puedan ayudar ya que es de suma importancia para mi.
Hola.
ResponderEliminarPero cual seria el problema no puedes hacer el insert a la bd?
Exactamente no puedo realizar el Insert a la Bd-- sera que me puedes ayudar es de suma importancia.
ResponderEliminarHola.
ResponderEliminarAnaliza el metodo Insert()de este articulo.
Como veras en el articulo explico como hacer algunas consultas a la bd y una de ellas es como insertar registros.
Saludos.
http://cristiantorresalfaro.blogspot.com/2012/07/comprobar-si-existe-registro-en-bd-c.html
ResponderEliminar