using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Para conectar con base de datos
using MySql.Data.MySqlClient;
namespace Agenda
{
class Program
{
private bool abierto = false;
private MySqlDataReader Reader;
private MySqlConnection connection;
private MySqlCommand command;
private int numContactos = 0;
private string MyConString;
private bool encontrar(string nom, string tel)
{
bool ret = false;
if (numContactos != 0)
{
string comando = "SELECT * FROM contacto "
+ "WHERE nombre = '" + nom + "' AND "
+ "tlf = '" + tel + "';";
//Comando de selección para la búsqueda
command.CommandText = comando;
Reader = command.ExecuteReader();
while ((Reader.Read()) && (ret == false))
ret = true; //Si llega a entrar en el bucle es que por lo menos
//ha encontrado un dato. Al estar buscando por la
//clave primaria de la relación, sólo debería devolver
//un único valor, el buscado.
Reader.Dispose();
}
return ret;
}
public void agregarCon(string nom, char sex, int edad, string tlf)
{
if (!encontrar(nom, tlf))
{
string agrega = "INSERT INTO contacto VALUES('" + nom + "','" + sex + "','" + edad + "','" + tlf + "');";
command.CommandText = agrega;
command.ExecuteNonQuery();
numContactos++;
}
else
{
System.Console.WriteLine("Contacto previamente accesible en la tabla");
}
}
public void imprimeAgenda()
{
if (numContactos != 0)
{
command.CommandText = "SELECT * FROM contacto;";
Reader = command.ExecuteReader();
while (Reader.Read())
{
for (int i = 0; i < Reader.FieldCount; i++)
System.Console.Write(Reader.GetValue(i).ToString() + " ");
System.Console.Write("\n");
}
Reader.Dispose();
}
}
public void editarContacto(string nom, string tel)
{
if (numContactos != 0)
{
//Variables para la edición
string nnom;
char nsex;
int nedad;
string ntel;
System.Console.WriteLine("Nuevo nombre: ");
do
{
nnom = System.Console.ReadLine();
System.Console.WriteLine();
}while(nnom.Length>50);
System.Console.WriteLine("Nuevo sexo: ");
do
{
string aux = System.Console.ReadLine();
nsex = aux[0];
System.Console.WriteLine();
} while ((nsex != 'M') && (nsex != 'H'));
System.Console.WriteLine("Nueva edad: ");
do
{
try
{
nedad = Convert.ToInt32(System.Console.ReadLine());
}
catch (InvalidCastException)
{
nedad = -1;
}
} while (nedad == -1);
System.Console.WriteLine("Nuevo teléfono: ");
do
{
ntel = System.Console.ReadLine();
System.Console.WriteLine();
} while (ntel.Length > 9);
eliminaContacto(nom, tel);
agregarCon(nnom, nsex, nedad, ntel);
}
}
public void eliminaContacto(string nom, string tel)
{
if (encontrar(nom, tel))
{
string comando = "DELETE FROM contacto "+
"WHERE nombre = '"+nom+"' AND tlf = '"+tel+"';";
command.CommandText = comando;
command.ExecuteNonQuery();
System.Console.WriteLine("Contacto modificado satisfactoriamente");
}
else
{
System.Console.WriteLine("Contacto no encontrado...");
}
}
public int getNumContactos()
{
return numContactos;
}
~Program()
{
if (abierto)
{
Reader.Close();
connection.Close();
}
}
Program()
{
MyConString = "SERVER=localhost;" +
"DATABASE=agenda;" +
"UID=usuario;" +
"PASSWORD=user;";
connection
= new MySqlConnection
(MyConString
); command = connection.CreateCommand();
connection.Open();
abierto = true;
command.CommandText = "SELECT * FROM contacto;";
Reader = command.ExecuteReader();
while (Reader.Read())
numContactos++;
Reader.Dispose();
}
public static void menu()
{
System.Console.WriteLine("---------MENU---------");
System.Console.WriteLine("1.- Agregar contacto");
System.Console.WriteLine("2.- Modificar contacto");
System.Console.WriteLine("3.- Eliminar contacto");
System.Console.WriteLine("4.- Ver Base actual");
System.Console.WriteLine("5.- Salir");
System.Console.Write("Elija una opción: ");
}
static void Main(string[] args)
{
Program obj
= new Program
(); int opcion;
string nnom;
char nsex;
int nedad;
string ntel;
try
{
do
{
Console.Clear();
Program.menu();
try
{
opcion = Convert.ToInt32(System.Console.ReadLine());
}
catch (InvalidCastException)
{
opcion = 0;
}
System.Console.WriteLine();
switch (opcion)
{
case 1:
System.Console.WriteLine("Nombre: ");
do
{
nnom = System.Console.ReadLine();
System.Console.WriteLine();
} while (nnom.Length > 50);
System.Console.WriteLine("Sexo: ");
do
{
string aux = System.Console.ReadLine();
nsex = aux[0];
System.Console.WriteLine();
} while ((nsex != 'M') && (nsex != 'H'));
System.Console.WriteLine("Edad: ");
do
{
try
{
nedad = Convert.ToInt32(System.Console.ReadLine());
}
catch (InvalidCastException)
{
nedad = -1;
}
} while (nedad == -1);
System.Console.WriteLine("Teléfono: ");
do
{
ntel = System.Console.ReadLine();
System.Console.WriteLine();
} while (ntel.Length > 50);
obj.agregarCon(nnom, nsex, nedad, ntel);
System.Console.ReadLine();
break;
case 2:
System.Console.WriteLine("Nombre: ");
do
{
nnom = System.Console.ReadLine();
System.Console.WriteLine();
} while (nnom.Length > 50);
System.Console.WriteLine("Teléfono: ");
do
{
ntel = System.Console.ReadLine();
System.Console.WriteLine();
} while (ntel.Length > 50);
obj.editarContacto(nnom, ntel);
System.Console.ReadLine();
break;
case 3:
System.Console.WriteLine("Nombre: ");
do
{
nnom = System.Console.ReadLine();
System.Console.WriteLine();
} while (nnom.Length > 50);
System.Console.WriteLine("Teléfono: ");
do
{
ntel = System.Console.ReadLine();
System.Console.WriteLine();
} while (ntel.Length > 50);
obj.eliminaContacto(nnom, ntel);
System.Console.ReadLine();
break;
case 4:
obj.imprimeAgenda();
System.Console.ReadLine();
break;
case 5:
break;
default:
System.Console.WriteLine("Opción incorrecta");
System.Console.ReadLine();
break;
}
} while (opcion != 5);
}
catch (MySqlException e)
{
System.Console.WriteLine("Excepción: " + e.Message);
}
finally
{
System.Console.WriteLine("Presione una tecla para salir");
System.Console.ReadLine();
}
}
}
}