Crear una Tabla con llave Primaria dentro de un DataSet
Bueno este tema me parece interesante tratarlo ya que gracias a las características que posee .NET junto con ADO.NET podemos tener toda la base de datos dentro del dataset, con esto logramos tener un sistema que trabaja casi totalmente desconectado.
Para comprender mejor como funciona, para esta vez no trabajaremos con conexión a ningún DBMS y solo veremos cómo funciona en nuestra aplicación cliente.
Manos a la Obra
Comencemos, primero abrimos nuestro vs luego creamos un proyecto de C#, y le ponemos el nombre que deseemos.
Con el proyecto ya creado lo que hacemos es irnos directamente al código, ahí declaramos un dataset y una tabla con el nombre categoría (categorías de películas), después le agregamos los campos idCat (int) y Descripción (string).
public Form1()
{
InitializeComponent();
bdl = new DataSet("DataSet");
categoria = new DataTable("Categoria");
crearcampos();
}
private void crearcampos()
{
categoria.Columns.Add("idCate", typeof(int));
categoria.Columns.Add("Descripcion", typeof(string));
}
private DataSet bdl;
private DataTable categoria;
Después procedemos a crear lo que nos interesa, un objeto del tipo UniqueContraint, este objeto nos facilitara el uso de la llave principal, impidiendo que exista una fila con un valor similar en el campo “IdCate”, la creación de est objeto lo situamos en el método “crearcampos”:
UniqueConstraint llavePrincipal = new UniqueConstraint(categoria.Columns[0], true);
Como vemos la línea de código, le damos al objeto el nombre de “llavePrincipal”, en su constructor ponemos a la columna que lo vamos a asociar, en nuestro caso la columna “idCate” y después ponemos como otro parámetro el valor true para especificar que es una llave principal.
Luego procedemos a agregar la restricción que acabamos de crear dentro de la tabla para que pueda funcionar, esta línea de código va debajo de la anterior:
categoria.Constraints.Add(llavePrincipal);
Ahora creemos la interface del usuario agregando dos textbox, dos label, un botón y por ultimo un datagridview para ver la tabla, debería de quedarnos de la siguiente manera:
Ahora nos vamos al código donde se ubica el evento click del botón agregar y ponemos el siguiente código:
try
{
categoria.Rows.Add(new object[] {int.Parse(textBox1.Text), textBox2.Text});
}
catch (DataException ex)
{
MessageBox.Show(ex.Message, "Error al agregar una fila", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Analizando un poquito el codigo podemos ver que la operación de agregar a una nueva fila esta dentro de un bloque try - catch, esto se debe a que si ponemos un dato duple para la llave principal, se producira una excepcion y esta tendra que ser captada el catch y debera mostrar un mensaje de error al usario.
Ahora probemos el programa, agregamos tres filas con distintos valores para sus respectivos campos, despues de hacer esto procedemos a agregar una fila con un campo repetido, si todo ha salida bien, el sistema nos mostrara los siguiente:
Bueno me despido esperando que les sirva este post, bye.
Para comprender mejor como funciona, para esta vez no trabajaremos con conexión a ningún DBMS y solo veremos cómo funciona en nuestra aplicación cliente.
Manos a la Obra
Comencemos, primero abrimos nuestro vs luego creamos un proyecto de C#, y le ponemos el nombre que deseemos.
Con el proyecto ya creado lo que hacemos es irnos directamente al código, ahí declaramos un dataset y una tabla con el nombre categoría (categorías de películas), después le agregamos los campos idCat (int) y Descripción (string).
public Form1()
{
InitializeComponent();
bdl = new DataSet("DataSet");
categoria = new DataTable("Categoria");
crearcampos();
}
private void crearcampos()
{
categoria.Columns.Add("idCate", typeof(int));
categoria.Columns.Add("Descripcion", typeof(string));
}
private DataSet bdl;
private DataTable categoria;
Después procedemos a crear lo que nos interesa, un objeto del tipo UniqueContraint, este objeto nos facilitara el uso de la llave principal, impidiendo que exista una fila con un valor similar en el campo “IdCate”, la creación de est objeto lo situamos en el método “crearcampos”:
UniqueConstraint llavePrincipal = new UniqueConstraint(categoria.Columns[0], true);
Como vemos la línea de código, le damos al objeto el nombre de “llavePrincipal”, en su constructor ponemos a la columna que lo vamos a asociar, en nuestro caso la columna “idCate” y después ponemos como otro parámetro el valor true para especificar que es una llave principal.
Luego procedemos a agregar la restricción que acabamos de crear dentro de la tabla para que pueda funcionar, esta línea de código va debajo de la anterior:
categoria.Constraints.Add(llavePrincipal);
Ahora creemos la interface del usuario agregando dos textbox, dos label, un botón y por ultimo un datagridview para ver la tabla, debería de quedarnos de la siguiente manera:
try
{
categoria.Rows.Add(new object[] {int.Parse(textBox1.Text), textBox2.Text});
}
catch (DataException ex)
{
MessageBox.Show(ex.Message, "Error al agregar una fila", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Analizando un poquito el codigo podemos ver que la operación de agregar a una nueva fila esta dentro de un bloque try - catch, esto se debe a que si ponemos un dato duple para la llave principal, se producira una excepcion y esta tendra que ser captada el catch y debera mostrar un mensaje de error al usario.
Ahora probemos el programa, agregamos tres filas con distintos valores para sus respectivos campos, despues de hacer esto procedemos a agregar una fila con un campo repetido, si todo ha salida bien, el sistema nos mostrara los siguiente:
Bueno me despido esperando que les sirva este post, bye.
Comentarios
Publicar un comentario