Вы находитесь на странице: 1из 7

1

Comprobar si Existe Registro en BD C# - VB.Net



Comprobar si un registro existe por medio del id.
Recuperar el ultimo id ingresado e ir incrementndolo.
Comprobar Datos antes de ingresar un registro.

El ejemplo esta desarrollado en visual estudio 2010 en c# y vb.net y se usa sqlexpres 2008.

Para este ejemplo uso una base de datos llamada Database que cuenta con una tablaPersonas.



La aplicacion tiene el siguiente diseo.



Ahora a programar agreguemos una clase(modulo en el caso de vb.net) a nuestro proyecto
llamado Datos aqu tendremos todos los mtodos que usaremos para que desde el cdigo de nuestro
formulario solo los llamemos.
2

Veamos primeramente el mtodo que se encargara de cargar todos los datos de nuestra bd.
public static DataTable Cargar()
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
{
DataTable dt = new DataTable();
string query = "SELECT * FROM PERSONAS ORDER BY Id ASC";
SqlCommand cmd = new SqlCommand(query, conn);
SqlDataAdapter adap = new SqlDataAdapter(cmd);
adap.Fill(dt);
return dt;
}
}

Public Function Cargar() As DataTable
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("default").ToString())
Dim dt As New DataTable()
Dim query = "SELECT * FROM PERSONAS ORDER BY Id ASC"
Dim cmd As New SqlCommand(query, conn)
Dim adap As New SqlDataAdapter(cmd)
adap.Fill(dt)
Return dt
End Using
End Function

Este cdigo ya es conocido por todos ya que en casi todos mis artculos los uso para cargar losdatos de
la bd, es un mtodo que retorna un datatable con todos los datos de la bd.
Ahora veamos el mtodo que nos servir para comprobar si un registro existe o no.
public static bool Existe(int id)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
{
string query = "SELECT COUNT(*) FROM PERSONAS WHERE ID=@Id";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("Id", id);
conn.Open();

int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count == 0)
return false;
else
return true;
}
}
Public Function Existe(ByVal id As Integer) As Boolean
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("default").ToString())
Dim query = "SELECT COUNT(*) FROM PERSONAS WHERE ID=@Id"
Dim cmd As New SqlCommand(query, conn)
cmd.Parameters.AddWithValue("Id", id)
conn.Open()

Dim count As Integer = Convert.ToInt32(cmd.ExecuteScalar())
If count = 0 Then
3

Return False
Else
Return True
End If
End Using
End Function

Tenemos el mtodo Existe que es de tipo bool y que tambin recibe un parmetro en este caso sera
el id que sera por el cual comprobaremos si el registro existe, vemos que en la consulta a la bd usamos la
instruccin COUNT que devuelve el numero de registros que existe con ese id, tambin usamos el
mtodo ExecuteScalar() para comprobar si encontr registro con el id si el valor es cero es porque no existe
el registro entonces retornamos false y retornamos true si ya existe el registro es decir que si encontr
registro con ese id.
Ahora veamos como recuperar el ultimo id ingresado, esto lo aremos porque el campo id no es
autonumerico por eso necesitamos obtener por medio de cdigo cual sera el prximo valor a ingresar.
public static int RecuperarId()
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
{
string query = "SELECT MAX(Id) FROM PERSONAS";
SqlCommand cmd = new SqlCommand(query, conn);
conn.Open();

return Convert.ToInt32(cmd.ExecuteScalar());
}
}

Public Function RecuperarId() As Integer
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("default").ToString())
Dim query = "SELECT MAX(Id) FROM PERSONAS"
Dim cmd As New SqlCommand(query, conn)
conn.Open()

Return Convert.ToInt32(cmd.ExecuteScalar())
End Using
End Function

Tenemos el mtodo RecuperarId que retorna un valor numrico que sera el valor del ultimo id, vemos que
en la query a nuestra bd usamos la funcin MAX de sql que devuelve el valor mximo de un campo de
nuestra tabla en este caso el id y por ultimo retornamos ese valor usando nuevamente el
mtodo ExecuteScalar.

Por ultimo tenemos el mtodo Insert que nos servir para insertar un nuevo registro.
public static void Insert(int id, string nombre, string apellido, int edad)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
{
string query = "INSERT INTO PERSONAS(Id,Nombre,Apellido,Edad) VALUES(@Id,@Nombre,@Apellido,@Edad)";
id = RecuperarId() + 1;
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("Id", id);
cmd.Parameters.AddWithValue("Nombre", nombre);
cmd.Parameters.AddWithValue("Apellido", apellido);
cmd.Parameters.AddWithValue("Edad", edad);
4

conn.Open();
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("Registro Ingresado con Exito...");
}
catch (Exception)
{
MessageBox.Show("Error no se Pudo Ingresar el Registro...");
}
}
}
Public Sub Insert(ByVal id As Integer, ByVal nombre As String, ByVal apellido As String, ByVal edad As Integer)
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("default").ToString())
Dim query = "INSERT INTO PERSONAS(Id,Nombre,Apellido,Edad) VALUES(@Id,@Nombre,@Apellido,@Edad)"
id = RecuperarId() + 1
Dim cmd As New SqlCommand(query, conn)
cmd.Parameters.AddWithValue("Id", id)
cmd.Parameters.AddWithValue("Nombre", nombre)
cmd.Parameters.AddWithValue("Apellido", apellido)
cmd.Parameters.AddWithValue("Edad", edad)
conn.Open()
Try
cmd.ExecuteNonQuery()
MessageBox.Show("Registro Ingresado con Exito...")
Catch ex As Exception
MessageBox.Show("Error no se Pudo Ingresar el Registro...")
End Try
End Using
End Sub

creamos el mtodo Insert y le pasamos los parmetros para insertar un nuevo registro, luego hacemos la
query a la bd para hacer el insert y le pasamos los parmetros de cada campo, algo importante de
mencionar es que antes de enviar el parmetro del id calculamos su valor haciendo uso del
mtodo RecuperarId que como dijimos devuelve el valor mximo de id entonces a este solo le sumamos 1
para que siempre se vaya incrementado en 1.

Eso seria todo en nuestra clase Datos.
Ahora en el evento load de nuestro formulario cargamos todos los datos.
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = Datos.Cargar();
}

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DataGridView1.DataSource = Datos.Cargar()
End Sub

Lo unico que hacemos es cargar todos los datos de nuestro tabla llamando el mtodo.
Cargar.

Ahora en el evento del botn que usaremos para comprobar si existe el registro tendremos el siguiente
cdigo.
5


private void btncomprobar_Click(object sender, EventArgs e)
{
if (!Datos.IsNumeric(txtcomprobar.Text))
MessageBox.Show("Ingres un Valor Numerico...");
else
{
if (!Datos.Existe(Convert.ToInt32(txtcomprobar.Text)))
MessageBox.Show("Registro No Existe...");
else
MessageBox.Show("Registro Ya Existe...");
}
}

Private Sub btncomprobar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btncomprobar.Click
If (Not IsNumeric(txtcomprobar.Text)) Then
MessageBox.Show("Ingres un Valor Numerico...")
Else
If (Not Datos.Existe(Convert.ToInt32(txtcomprobar.Text))) Then
MessageBox.Show("Registro No Existe...")
Else
MessageBox.Show("Registro Ya Existe...")
End If
End If
End Sub

Antes de comprobar si existe el registro por medio del id comprobamos que el dato ingresado sea numerico
si lo es entonces llamamos al metodo Existe y le pasamos el valor ingresado y mostramos los respectivos
mensajes si el id ya existe o no.

Ahora en el evento del boton que usaremos para agregar un nuevo registro tendremos lo siguiente.
private void btnagrear_Click(object sender, EventArgs e)
{
if (!Datos.IsNumeric(txtid.Text) | !Datos.IsNumeric(txtedad.Text))
{
MessageBox.Show("Ingres un Valor Numerico...");
}
else
{
if (!Datos.Existe(Convert.ToInt32(txtid.Text)))
{
Datos.Insert(Convert.ToInt32(txtid.Text), txtnombre.Text, txtapellido.Text, Convert.ToInt32(txtedad.Text));
dataGridView1.DataSource = Datos.Cargar();
}
else
{
MessageBox.Show("Id Ya Existe...");
}
}
}

Private Sub btnagrear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnagrear.Click
6

If (Not IsNumeric(txtid.Text) Or Not IsNumeric(txtedad.Text)) Then
MessageBox.Show("Ingres un Valor Numerico...")
Else
If (Not Datos.Existe(Convert.ToInt32(txtid.Text))) Then
Datos.Insert(Convert.ToInt32(txtid.Text), txtnombre.Text, txtapellido.Text, Convert.ToInt32(txtedad.Text))
DataGridView1.DataSource = Datos.Cargar()
Else
MessageBox.Show("Id Ya Existe...")
End If
End If
End Sub

Antes de ingresar hacemos 2 validaciones primero comprobamos que el los datos del id y la edad
sean numericos y tambien validamos que el id ingresado no exista si pasa las 2 validaciones agregamos el
registro si no mostramos un mensaje que no se pudo agregar.



7

Вам также может понравиться