Crea tu aplicación VB .Net + BD (Oracle, SQL Server, MySQL)
Un saludo a todos! Sean bienvenidos a mi primer post del 2011 y en G3ekArmy, que mejor manera de iniciar este año que programando. Este post esta enfocado a personas que están iniciándose en el mundo de la programación (Con nociones de SQL y .Net), y presenta una gran tendencia del software, utilizar una base de datos. Así que crea tu aplicación VB .Net + BD.
¿Que necesitamos para comenzar?
Visual Studio .Net 2008 y trabajaremos con los gestores de BD más utilizados en la actualidad (Drivers) el cuál son SQL Server, Oracle y MySQL, así que comenzamos.
Un poco de teoría:
Para enteder como funciona la tecnologia de ADO.Net necesitamos dejar claros algunos conceptos:
Connection: Proporciona una conexión usada para comunicarse con la fuente de datos. También actúa como Abstract Factory para los objetos command.
Command: Usado para realizar alguna acción en la fuente de datos, como lectura, actualización, o borrado de datos relacionales.
Parameter: Describe un simple parámetro para un command. Un ejemplo común es un parámetro para ser usado en un procedimiento almacenado.
DataAdapter: “Puente” utilizado para transferir data entre una fuente de datos y un objeto DataSet (ver abajo).
Crear la base de datos:
Lo primero será crear una base de datos llamada Usuarios y una tabla llamada Datos con las siguientes características:
ID Entero Autoincrementable
Nombre Carácter No nulo
Edad Entero No nulo
Hobbies Carácter No nulo
Y serán todos los elementos, nos enfocaremos al uso de la tecnologia ADO.Net en un ejemplo fácil pero entendible.
VB + SQL Server
Primero necesitamos crear un nuevo proyecto, y que sea una aplicación de escritorio, al parecer este modo será mas fácil, ya que SQL Server es el gestor de BD por defecto en la plataforma .Net. Sino estas muy bien familiarizado con bases de datos, puedes utilizar Microsoft SQL Server Management Studio en su versión express.
Lo primordial será diseñar nuestro formulario:

3 Botones y un Datagridview y un ComboBox con los valores por default : ID, nombre, edad, y hobby
Ahora lo verdaderamente importante, momento de pasar a programar
Lo primero será agregar los namespaces siguientes:
![]()
El namespace System.Data.SqlClient es el necesario para interactuar con la base de datos en el proveedor SQL Server
Una vez terminado, ahora declaramos las variables que utilizaremos.

Están 2 muy importantes la variable strConexion y Conexion, la primera solamente es del tipo cadena y contiene la “dirección” de la base de datos, claro contiene más información como el tipo de proveedor, el usuario y la seguridad empleada. El objeto Conexion es declarado del tipo SqlConnection y con parámetro el valor de strConexion. Las variables dtTabla y dsTabla más adelante las utilizaremos.
¿De donde obtenemos la cadena de conexión? Fácil, nos vamos al explorador de servidores que se encuentra en el menú ver. Una vez que nos salga el menú agregamos una nueva conexión.

Seleccionamos el origen de datos Microsoft SQL Server (SqlClient), el nombre del servidor es .\SQLEXPRESS que es nuestro proveedor, si todo sale bien en Seleccionar el nombre de la base de datos, debe aparacer la que se creo anteriormente, en este caso USUARIOS. En la ventana de propiedades se puede ver la propiedad Cadena de conexión, esa es la cadena que utilizaremos.


Ahora crearemos un procedimiento llamado Actualizar, este procedimiento no lleva parámetros y lo utilizaremos en el momento que se cargue el formulario, se ingrese un dato o se elimine, nos actualizara el DataGridView con los nuevos datos. En esta parte utilizaremos las variables antes declaradas dtTabla es del tipo DataTable representa una “tabla” con columnas y filas.

En este procedimiento al inicio llamamos al procedimiento clear() de dtTabla.Rows, con esto nos aseguramos que en el momento que se llame a la función este “limpia”. Inmediatamente se declara un SqlCommand llamado cmdDatos con los parametros “Select * from Datos”, y el objeto conexión, esta consulta siempre se realizara en el momento que se mande a llamar a cmdDatos, en este caso en el SqlDataAdapter, ahora se llama al procedimiento da.Fill(dtTabla) que se encarga de llenar dtTable con el valor arrojado por nuestra consulta que se encuentra en cmdDatos, en otras palabras, por todos los datos en la tabla. Al final el objeto DataGridView1 su origen de datos será dtTabla.
Ahora en el evento Load del formulario, se llama al procedimiento Actualizar(). Con la finalidad de presentar todos los datos contenidos en la tabla al inicio del programa.
Ahora vamos a programar la parte de insertar datos.

En este código al inicio declaramos un nuevo objeto llamado cmdInsertar del tipo SqlCommand, este objeto se encarga de ejecutar las consultas deseadas, dentro de el hay 3 tipos básicos de ejecutar las consultas, la primera es ExecuteNonQuery se utiliza cuando una consulta no retorna algún tipo de valor (INSERT, DELETE, UPDATE), la segunda es ExecuteScalar y esta se utiliza cuando la consulta nos regresa solamente un valor, y la última es ExecuteReader y es cuando la consulta regresa múltiples valores.
Declaramos nuestras variables del tipo cadena, y en InputBox “recuperamos” los valores. Después creamos una instancia del objeto cmdInsertar ahora como parámetros la consulta y el objeto conexión, en esta consulta ingresamos los valores de nombre, edad, y hobby mediante parámetros. Siempre es importante ya que le da mas seguridad a nuestra consulta. Ahora se abre la conexión con el objeto Conexion.Open(), ejecutamos la consulta con cmdInsertar.ExecuteNonQuery(), actualizamos la información y cerramos la conexión. Como verán resulta bastante fácil.
Ahora programaremos la opción de eliminar:

Cuando se quiere eliminar, por lo regular se posee la información del elemento, en este caso sere especifico. Vamos a eliminar por medio del ID que posee cada usuario en la base de datos. Se declara cmdEliminar del tipo SqlCommand, y un ID de tipo entero. En ID se almacena el valor que el usuario desea eliminar. Tenemos una condición, si no hay elementos en la tabla no podemos eliminar, eso se hace contando cuantos elemento posee la tabla con el procedimiento dtTabla.Rows.Count, en caso de haber elementos creamos una instancia de SqlCommand con la consulta “Delete from Datos Where Id=@id”, también estamos mandando por parámetro el valor de ID, abrimos la conexión, ejecuamos la consulta, actualizamos y cerramos la conexión.
Por último y no menos importante, la opción de buscar:

Aquí tenemos las variables Valor y Criterio, ¿porque? el criterio es el valor que el usuario selecciona como búsqueda (id,nombre,edad,hobby) y valor obviamente es lo que se va a buscar. Hay una condición en el procedimiento, esta programada cuando se selecciona el Id u otro criterio de búsqueda, un id es un valor que no se debe repetir, se puede repetir datos más no id, al momento de buscar el id debemos ser específicos, por eso esta el “=”. Pero si buscamos por otro criterio se utiliza la clausula LIKE donde los valores encontrados son todos aquellos que coincidan con el valor de búsqueda.

Ejecutamos y listo! Tenemos una aplicación que se conecta a una BD en SQL Server 2005…
La tecnologia de ADO.Net nos facilita esta conexión, es momento de hacerlo para MySQL y Oracle. Se daran cuenta que gran parte del código se reutiliza y nada más se cambian los objetos del namespace SystemData.SqlClient
VB + MySQL
Reutilizaremos el mismo formulario, pero antes de empezar a programar es importante que descarguen el driver de MySQL para .Net y su motor de base de datos
Conector
http://dev.mysql.com/downloads/connector/net/
Motor BD MySQL
http://dev.mysql.com/downloads/mysql/
Una vez descargados, crearemos la base de datos usuarios, con la tabla datos y los mismos tipos de datos.

Despues de instalar el motor de base de datos, y el conector, en el proyecto de Visual Studio debemos agregar la referencia MySQL.Data, ese es el namespace que utilizaremos. Esto desde el menú Proyecto -> Agregar referencia…

También debemos poseer la cadena de conexión, de esta manera: Ingresando directamente esta cadena
“Server=nuestro_servidor;Database=NombreBD;Uid=Usuario;Pwd=Contraseña;“
Agregamos nuestros namespaces y se darán cuenta que los objetos de esta clase no son tan diferente al de la clase SqlClient
![]()
Los elementos diferentes entre ambas clases son que en SqlClient tenemos a SqlConnection, SqlDataAdapter, SqlCommand… Y en la clase Mysql.Data.SqlCliente son MysqlConnection, MysqlDataAdapter, MysqlCommand. Como verán no son grandes cambios al código xD.
Agregar:

Eliminar:

Buscar:

Y el procedimiento Actualizar
Como ven ¿Es fácil, no? Ahora vamos con Oracle…
VB + Oracle
Ya para finalizar este tutorial, vamos con el proveedor Oracle. Lo primero es descargar Oracle en su versión 11g y el Oracle Data Provider para .Net.
Oracle Data Provider
http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
Oracle Express Edition
http://www.oracle.com/technetwork/database/express-edition/downloads/index.html
En este último ejemplo utilizaremos el mismo diseño del formulario. Ademas crearemos en Oracle la base de datos con las mismas características que las anteriores.
Importamos el namespace indicado:
![]()
Pero sin antes agregar la referencia Oracle.DataAcess.dll a nuestro proyecto.
Y su cadena de conexión: “Data Source=Nombre_BD;User Id=Usuario;Password=Contraseña“
Código:
Declaramos nuestras variables

Agregar:

Eliminar:

Buscar:

Actualizar:

Con esto doy por finalizado mi tutorial, espero que les sea de utilidad y son bienvenidas las criticas constructivas
. Esperen las próximas entregas de como hacerlo para C# y Java. Y por si deseas las descargas de los proyectos…
Saludos
Creado, tomado y publicado por mí de Iron Bits para #G3ekArmy














Excelente! Soy n00b en esto así q pondré en practica
mmm esta bien el tuto sin embargo aunq seas novato, creo q es importante usar desde comando la base de datos o sea no usar el IDE para crear la cadena de conexion.
por otro lado por que generar dos objetos de sql command? esta practica puede generar en futuros casos en performance:
dim scmd as new sqlcommand ??
deberia ser unicamente
dim scmd as sqlcommand
despues donde asignas los commandos vuelves a instanciar un nuevo objeto usando NEW de nuevo.
entonces de esta manera no necesitas usar NEW en la primera declaracion
la logica parece muy bien, pero olvidas algo muy importante en el flujo del programa que son las excepciones, creo q esto es muy basico antes de generar una conexion a la BD.
y pues por ultimo ligeramente avanzado puedes usar interfaces de las conexiones y leerlas de un acrhivo .config de esta manera no necesitarias estar haciendo una clase para cada provider :S
Tienes razón amigo, y gracias por los consejos! El tutorial esta orientado para personas que apenas quieren tener contacto con el mundo de la programación. De hecho por eso esta orientado en VB.
En este caso la cadena de conexión es tan fácil obtenerla de http://www.connectionstrings.com o programar una clase que genere la cadena solo dando el servidor, usuario y password.
Saludos!
Como me registro esta pagina???
te refieres a registro como sescriptor o como colaborador? .. saludos!
Que la curva de aprendizaje de VB a nivel basico sea mas rapida que en otros lenguajes de programación, no significa que no sea entrar en el mundo de la programación, no confundais terminos.
Por otro lado el manual, si se especifica que es para gente recien llegada a la programación, es útil, pero sino, hay que tener en cuenta que está plagado de malas practicas tanto a nivel de estructuración de código como de código mismo.
hola a todos.
Tengo un gran duda y deseo a ver si pueden ser tan amables de despejarla.
entre en el mundo de la programacion de vbnet con mysql solo para aprender de diferentes areas de sistemas, me puse a crear un sistema de inventario para poder practicar y asi matar 2 pajaros de un tiro para poder usarla en donde trabajo. ya que soy el encargado de soporte. y para tener todo bajo control lo hice y asi practicaba.
pero ohhhh sorpresa despues de 2 meses termine mi proyecto y al querer publicar mi aplicacion constate que no er muy viable haberlo hecho con mysql, se los explicare porque.
Al momento de crear el ejecutable de mi aplicacion solo es creado mi proyecto pero sencillamente no se me hizo viablo porque tambien tengo que tener instalado mysql server y myodbc y eso no me comviene porque pensaba mandar mi aplicacion a compañeros de otro lados en una ciudad de mexico, pero creo que deben de hacer una serie de isntalacion que resultarian muy engorrosas aun para alguien que ya sabe del tema, la idea era crear el instalador y automaticamente que todo quedara listo para usarse.
hay alguna forma de hacer esto.
use myodbc y mysql y mi conexion esta en el local hosta y la requiero para usarla en una pc loca sin tener en cuenta nada de red.
He oido comentarios que se puede crear la conexion en forma nativa, pero la verdad no se como empezar con eso.
y la otra es que al empezar la aplicacion comparar si existen las bases de datos y si no existen crearlas, pero otra pregunta es como crearlas y donde crearlas.
alguien que me indique como hacerlo o que me de una ayudadita con algun codigo de ejemplo para poder empezar.
O si alguien sabe como hacerle para pasar todo mi proyecto a base de datos en access agradeceria su especial ayuda.
La verdad me tome mi tiempo para llevar a cabo mi proyecto y desearia dejarlo asi con mysql si tuviera solucion, pero si no ni modo a cambiarlo a access alcabo que siemepre hay que seguir aprendiendo.
No pude ver la imágenes del tuto pero quisiera q me mandaras todo el material al mail, me parece muy interesante programar gracias por hacer un tutorial bien resumido y completo directo al grano.
esta bueno los ejemplos pero existe un problema , una vez insertado algun valor en la grilla no nos deja modificar ningun registro en la base de datos , es decir el codigo solo inserta datos , borra datos y los busca pero no actualiza datos
me gustaria que me enviara el codigo de actualizar los datos que hay en la grilla al siguiente correo
gjsak47@hotmail.com
gilbertjair21@yahoo.es
tengo una duda gigante soy nuevo en este tema asi que necesito ayuda para vincular un boton con otro, es decir, que cuando le de clic en boton1 el boton dos que cambie de color.
por ejemplo tengo 3 botones: uno en blaco para el cambio de colo y los otros dos serian On y Off, al darle clic a on que el boton en blaco cambie de color y si le doy clic en off que regrese a su estado normal…..les agradeceria mucho ok…soy inexperto en esto…de antemano gracias
…por lo de arriba es en Visual basic 2010…
podria hacer uno = pero con C# para el entendimiento de ese lenguaje por favor
alguien me podria explicar de la configuracion de puerto serie en visul basic 2010…me seria de gran ayuda..gracias..
alguien sabe como configurar el manejo de puerto en visual basic …añguin me puede ayudar por fa lo ocupo, graciasss
Muy interesante espero que sigas aportando mas
Actualmente estoy trabajando en un sistema en Visual Basic .Net que usa Mysql como motor de base de datos. Me encargaron que le hiciera un instalador en el cual integrara la aplicación, la base de datos, así como la configuración de la misma. Lo ideal hubiera sido usar Sqlserver Express como base de datos de tipo embebida, pero por cuestiones de premura en el tiempo de entrega del proyecto (que raro…), se optó por hacer la instalación automática
SQL Injection a la vista… y demás
Podrian ayudar a como guardar imagenes a la base de datos en oracle 10g o 11g
Gracias.
amigos me encuentro con un gran problema, resulta que ya e terminado mi aplicación y ahora lo empaquete en un proyecto para instalar en visual basic.net lo genere y todo perfecto no marco ningun error, pero a la hora de ejecutarlo en mi computadora me sale un error que la verdad no se ni que onda y al ejecutarlo en otra computadora e igual sale lo mismo. el error es este:
Excepción no controlada en la aplicación. Si hace clic en continuar, la aplicación omitirá este error e intentara continuar.
Si hace clic en salir, la aplicación se cerrara inmediatamente
No se puede cargar el archivo o ensamblado “MySQLDriverCS. Version=3.0.1735.36021, culture=neutral, PublickeyToken=172F94dfb0faf263”ni una de sus dependencias.
El sistema no puede encontrar el archivo especificado.
Espero que alguien me ayude….. Saludos
Esta bien padre esta página….. Saludos.
podrias dejar la base de datos que usastes en la version vb + mysql yo la probaria en heidisql
Excelente aporte, muchas gracias.
Me gusto tu tema ¿cómo le hago para tenerlo? ó ¿cómo lo busco? De antemano, gracias.