Operaciones CRUD
Última actualización:
23/08/2020
⁃
Dificultad:
Intermedio
Cree un programa C# que permita realizar operaciones CRUD desde SQLite, el programa debe tener el siguiente menú:
- 1. Añadir
- 2. Ver
- 3. Editar
- 4. Eliminar
- 5. Salir
Primero prepare una base de datos SQLite versión 3 de personas con una tabla de persona utilizando la consulta SQL de la entrada. Después cree las operaciones CRUD (añadir, ver, editar y eliminar).
Añadir
Solicite un nombre y una edad al usuario y inserte los datos en la base de datos.
Ver
Muestre todas las personas guardadas en la base de datos.
Editar
Solicite el código de persona al usuario y si existe solicite el nuevo nombre y edad para modificar los datos de la base de datos.
Eliminar
Solicite el código de persona al usuario y si existe elimine la persona de la base de datos.
Salir
Finalice el programa.
No tendrá que preocuparse por el código de la persona ya que es autoincremental.
Entrada
create table if not exists persona
(
cod integer primary key autoincrement,
nombre varchar(20),
edad int
)
Salida
Solución
using System;
using System.Data;
using System.Data.SQLite;
using System.IO;
public class CRUDSQLite
{
public static string NombreBaseDatos = "persons.sqlite";
public static int OpcionMenu = -1;
public static void Main(string[] args)
{
CrearBaseDatosSiNoExiste();
CrearTablasSiNoExisten();
do
{
VerMenu();
switch (OpcionMenu)
{
case 1: Anyadir(); break;
case 2: Ver(); break;
case 3: Editar(); break;
case 4: Eliminar(); break;
}
} while (OpcionMenu != 5);
}
public static void VerMenu()
{
Console.WriteLine();
Console.WriteLine("1. Añadir");
Console.WriteLine("2. Ver");
Console.WriteLine("3. Editar");
Console.WriteLine("4. Eliminar");
Console.WriteLine("5. Salir");
Console.WriteLine();
Console.Write("Introduzca una opción: ");
OpcionMenu = int.Parse(Console.ReadLine());
Console.Clear();
}
public static void CrearBaseDatosSiNoExiste()
{
if (!File.Exists(NombreBaseDatos))
{
SQLiteConnection.CreateFile(NombreBaseDatos);
}
}
public static void CrearTablasSiNoExisten()
{
using (SQLiteConnection cnx =
new SQLiteConnection("Data Source=" + NombreBaseDatos + ";Version=3;"))
{
cnx.Open();
string sql = "create table if not exists person(" +
"cod integer primary key autoincrement," +
"name varchar(20)," +
"age int)";
using (SQLiteCommand cmd = new SQLiteCommand(sql, cnx))
{
cmd.ExecuteNonQuery();
}
}
}
public static void Anyadir()
{
Console.Clear();
Console.WriteLine("Añadir");
Console.WriteLine();
Console.Write("Nombre: ");
string name = Console.ReadLine();
Console.Write("Edad: ");
int age = int.Parse(Console.ReadLine());
using (SQLiteConnection cnx =
new SQLiteConnection("Data Source=" + NombreBaseDatos + ";Version=3;"))
{
cnx.Open();
string sql = "insert into person (name, age) values ('" + name + "'," + age + ")";
using (SQLiteCommand cmd = new SQLiteCommand(sql, cnx))
{
cmd.ExecuteNonQuery();
}
}
}
public static void Ver()
{
Console.Clear();
Console.WriteLine("Ver");
Console.WriteLine();
using (SQLiteConnection cnx =
new SQLiteConnection("Data Source=" + NombreBaseDatos + ";Version=3;"))
{
cnx.Open();
using (SQLiteCommand cmd = cnx.CreateCommand())
{
cmd.CommandText = "select * from person";
cmd.CommandType = CommandType.Text;
SQLiteDataReader lector = cmd.ExecuteReader();
while (lector.Read())
{
Console.WriteLine("Cod: " + lector["cod"].ToString());
Console.WriteLine("Nombre: " + lector["name"].ToString());
Console.WriteLine("Edad: " + lector["age"].ToString());
Console.WriteLine();
}
}
}
}
public static void Editar()
{
Console.Clear();
Console.WriteLine("Editar");
Console.WriteLine();
Console.Write("Cod: ");
int codPersona = int.Parse(Console.ReadLine());
if (existePersona(codPersona))
{
Console.Write("Nombre: ");
string nuevoNombre = Console.ReadLine();
Console.Write("Edad: ");
int nuevaEdad = int.Parse(Console.ReadLine());
using (SQLiteConnection cnx =
new SQLiteConnection("Data Source=" + NombreBaseDatos + ";Version=3;"))
{
cnx.Open();
string sql = "update person set name='" + nuevoNombre + "'," +
"age=" + nuevaEdad + " where cod=" + codPersona;
using (SQLiteCommand cmd = new SQLiteCommand(sql, cnx))
{
cmd.ExecuteNonQuery();
}
}
}
else
{
Console.WriteLine("No encontrado");
}
}
public static void Eliminar()
{
Console.Clear();
Console.WriteLine("Eliminar");
Console.WriteLine();
Console.Write("Cod: ");
int codPersona = int.Parse(Console.ReadLine());
if (existePersona(codPersona))
{
using (SQLiteConnection cnx =
new SQLiteConnection("Data Source=" + NombreBaseDatos + ";Version=3;"))
{
cnx.Open();
string sql = "delete from person where cod=" + codPersona;
using (SQLiteCommand cmd = new SQLiteCommand(sql, cnx))
{
cmd.ExecuteNonQuery();
}
}
}
else
{
Console.WriteLine("No encontrado");
}
}
private static bool existePersona(int codPersona)
{
bool existe = false;
using (SQLiteConnection cnx =
new SQLiteConnection("Data Source=" + NombreBaseDatos + ";Version=3;"))
{
cnx.Open();
using (SQLiteCommand cmd = cnx.CreateCommand())
{
cmd.CommandText = "select 1 as total from person where cod=" + codPersona;
cmd.CommandType = CommandType.Text;
SQLiteDataReader lector = cmd.ExecuteReader();
if (lector.Read())
{
existe = lector["total"].ToString() == "1" ? true : false;
}
}
}
return existe;
}
}