ERNESTO GOMEZ VARGAS Ing. MSc INTRODUCCION Dado que en las transacciones con las bases de datos muchas veces se repite la creacin de los mismos objetos, se recomienda la utilizacin de la clase Conexin que maneje la informacin que se repite en todas estas transacciones con el fin de repetir las mismas lneas de cdigo. OBJETIVO Desarrollar un aplicacin en un modelo de tres capas que permita hacer insertar, borrar, modificar y consultar los datos de clientes en una base de datos en ACCESS. Se debe trabajar en la clase Clientes Los siguientes Atributos (Cedula, Nombres, Apellidos).
BASE DE DATOS Base de datos en ACCESS Nombre: Ventas.mdb Campos: Cedula, Nombres, Apellidos
public string GestCedula { set {Cedula = value;} get {return Cedula;} } public string GestNombres { set {Nombres = value;} get {return Nombres;} } public string GestApellidos { set {Apellidos = value;} get {return Apellidos;} } Clase GestClientes public string CrearCliente() { return "INSERT INTO Clientes VALUES ('"+this.Cedula+"','"+this.Nombres+"','"+this.Apellidos+"')"; } public string borrarCliente() {return "DELETE * FROM Clientes WHERE Cedula='" + this.Cedula+ "'"; } public string modificarnombre() {return "UPDATE Clientes SET Nombres = '"+this.Nombres+"',Apellidos = '"+this.Apellidos+"' WHERE Cedula= '"+this.Cedula+"'"; } public string consultartodos() {return "SELECT * FROM Clientes WHERE(Nombres LIKE '" +this.Nombres+ "%')"; } } Clase Conexion public class Conexion { private string sentenciaSQL1; private string mensaje; System.Data.OleDb.OleDbConnection conn; System.Data.OleDb.OleDbTransaction miTran; public Conexion() { conn = new System.Data.OleDb.OleDbConnection(); //conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data source=D:\Ventas.mdb"; conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Ventas.accdb;Persist Security Info=False";
} Clase Conexion public void SetSentencia1(string s1) { sentenciaSQL1=s1; } public string EjecutarSQL1() { try { System.Data.OleDb.OleDbCommand miComando = new System.Data.OleDb.OleDbCommand(); miComando.Connection=conn; conn.Open(); miTran = conn.BeginTransaction(IsolationLevel.ReadCommitted); //ok Prueba con Bloqueos miComando.Connection = conn; // Se pasa el nombre de la conexion al Objeto Comando miComando.Transaction= miTran; // SE pasa el nombre de la transaccion al objeto Comando miComando.CommandText = sentenciaSQL1; miComando.ExecuteNonQuery(); miTran.Commit(); // Dejamos en firme return "Todo OK"; } Clase Conexion catch (Exception e) { miTran.Rollback(); return "Se presento el siguiente error "+e.Message; } finally { conn.Close(); } }
public string consultaruno() { int seleccionados; // se define un entero para manejar el resultado de la consulta System.Data.OleDb.OleDbDataAdapter objSql2;// se referencia un objeto ObjSql2 de la clase OleDbDataAdapter se utilizan para rellenar DataSet y actualizar el origen de datos. objSql2 = new System.Data.OleDb.OleDbDataAdapter(sentenciaSQL1, conn); //se instancia el objeto ObjSql2 que recibe dos parametros el String con la sentencia SQL y el objeto OleDbConnection System.Data.DataSet ds2 = new System.Data.DataSet(); // se instancia el objeto ds2 de la clase Dataset objSql2.Fill(ds2, "tabla1"); //Agrega filas a DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando una tabla "tabla1" seleccionados = ds2.Tables["tabla1"].Rows.Count; //retorna el Nmero de filas agregadas o actualizadas correctamente if (seleccionados == 0) //si no encontro registro { return " No se encuentra el nombre " ; // mensaje retornado al no encontrar registro de consulta } else { string a; a=ds2.Tables["tabla1"].Rows[0][0].ToString(); return a; } }
Clase Conexion Clase Conexion public System.Data.DataSet Consultar() { try { conn.Open(); System.Data.OleDb.OleDbDataAdapter objRes; objRes = new System.Data.OleDb.OleDbDataAdapter(sentenciaSQL1, conn); System.Data.DataSet datos; datos = new System.Data.DataSet(); objRes.Fill(datos, "Tabla"); mensaje="Todo OK"; return datos; } catch (Exception MiExc) { System.Data.DataSet datos2; datos2 = new System.Data.DataSet(); mensaje= "Se presento el Siguiente Error " + MiExc.Message; return datos2; } finally {conn.Close();} } Presentacin
Presentacin Crear private void Crear_Click(object sender, System.EventArgs e) { LogicaClientes.GestClientes ObjCliente; ObjCliente = new LogicaClientes.GestClientes(); ObjCliente.GestCedula=textBox1.Text; ObjCliente.GestNombres=textBox2.Text; ObjCliente.GestApellidos=textBox3.Text; LogicaClientes.Conexion con; con = new LogicaClientes.Conexion(); con.SetSentencia1(ObjCliente.CrearCliente()); label4.Text=ObjCliente.CrearCliente(); label5.Text=con.EjecutarSQL1(); } Presentacin Modificar private void Modificar_Click(object sender, System.EventArgs e) { LogicaClientes.GestClientes ObjCliente; ObjCliente = new LogicaClientes.GestClientes(); ObjCliente.GestCedula=textBox1.Text; ObjCliente.GestNombres=textBox2.Text; ObjCliente.GestApellidos=textBox3.Text; LogicaClientes.Conexion con; con = new LogicaClientes.Conexion(); con.SetSentencia1(ObjCliente.modificarnombre()); label4.Text=ObjCliente.modificarnombre(); label5.Text=con.EjecutarSQL1(); } Presentacin Borrar private void Borrar_Click(object sender, System.EventArgs e) { LogicaClientes.GestClientes ObjCliente; ObjCliente = new LogicaClientes.GestClientes(); ObjCliente.GestCedula=textBox1.Text; ObjCliente.GestNombres=textBox2.Text; ObjCliente.GestApellidos=textBox3.Text; LogicaClientes.Conexion con; con = new LogicaClientes.Conexion(); con.SetSentencia1(ObjCliente.borrarCliente()); label4.Text=ObjCliente.borrarCliente(); label5.Text=con.EjecutarSQL1(); } Presentacin Consultar Varios private void Consultar_Click(object sender, System.EventArgs e) { LogicaClientes.GestClientes ObjCliente; ObjCliente = new LogicaClientes.GestClientes(); ObjCliente.GestCedula=textBox1.Text; ObjCliente.GestNombres=textBox2.Text; ObjCliente.GestApellidos=textBox3.Text; LogicaClientes.Conexion con; con = new LogicaClientes.Conexion(); con.SetSentencia1(ObjCliente.consultartodos()); label4.Text=ObjCliente.consultartodos(); dataGrid1.DataSource =con.Consultar().Tables["tabla"].DefaultView; } Presentacin Consultar Uno private void Consultaruno_Click(object sender, System.EventArgs e) { LogicaClientes.GestClientes ObjCliente = new LogicaClientes.GestClientes(); ObjCliente.GestCedula = textBox1.Text; LogicaClientes.Conexion con = new LogicaClientes.Conexion(); con.SetSentencia1(ObjCliente.consultarunon()); label4.Text = ObjCliente.consultarunon(); con.SetSentencia1(ObjCliente.consultarunoa()); textBox3.Text = con.consultaruno();