• Jueves 25 de Abril de 2024, 13:29

Autor Tema:  Manejo de una BD Access y c#  (Leído 4661 veces)

alt126

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Manejo de una BD Access y c#
« en: Viernes 30 de Enero de 2009, 17:40 »
0
Muy buenas a todos...me llamo Antonio, hace poco que he empezado con C# y tengo algunas dudas del lenguaje y las BD...

Yo he hecho muchas aplicaciones en c++ builder con el objeto Table, Datasource, etc... pero no entiendo bien las conexiones en C#.

Estoy haciendo una pequena aplicacion y lo que quiero es muy basico.

conectarme a una BD access.
Leer registros...y mostrarlos
Moverme por ellos...
Insertar, editar y eliminar
y hacer consultas y mostrar resultados

todo muy simple!!

Lo que pasa es que no quiero usar las conexiones de c# que dan mediante un wizard asi que buscando por internet esto es lo que tengo:

Variables

Código: Text
  1.         OleDbConnection Conexion;
  2.         OleDbDataReader Campo;
  3.         OleDbCommand Comando;
  4.         OleDbDataAdapter Adaptador;        
  5.         OleDbCommandBuilder Validar;
  6.         BindingSource Origen;
  7.         BindingSource Origen2;
  8.         DataSet Dataset;
  9.         DataSet Dataset2;
  10.  
      
Cadena de conexion
      
Código: Text
  1.         Conexion = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; User Id=; Password=; Data Source=C:db1.mdb");
  2.  
           
Esto es lo que hago para leer de una consulta y mostrar en un componente de la interfaz.

         
Código: Text
  1. Conexion.Open();
  2.             Comando = Conexion.CreateCommand();
  3.             Comando.CommandText = "SELECT Nombre FROM Tipos_Gastos";
  4.             Campo = Comando.ExecuteReader();
  5.             while (Campo.Read())
  6.             {                
  7.                 cbTipo.Items.Add(Campo.GetString(0));
  8.             }
  9.             Campo.Close();
  10.             Conexion.Close();
  11.  

Esto para asociar los componentes de la interfaz con una tabla.

           
Código: Text
  1. Conexion.Open();
  2.             Comando.CommandText = "Select * FROM Gastos";
  3.             Comando.ExecuteNonQuery();
  4.             Adaptador = new OleDbDataAdapter(Comando);
  5.             Dataset = new DataSet();
  6.             Adaptador.Fill(Dataset, "Gastos");
  7.             Origen = new BindingSource(Dataset, "Gastos");
  8.             Importel.DataBindings.Add("Text", Origen, "Importel", true);
  9.             Importee.DataBindings.Add("Text", Origen, "Importee", true);
  10.             cbTipo.DataBindings.Add("Text", Origen, "Tipo", true);
  11.             Fecha.DataBindings.Add("Text", Origen, "Fecha", true);
  12.             Concepto.DataBindings.Add("Text", Origen, "Concepto", true);
  13.             Campo.Close();
  14.             Conexion.Close();
  15.  

Para moverme por los registros.

         
Código: Text
  1. Origen.MovePrevious();
  2.  
         
Para comenzar una insercion de datos

         
Código: Text
  1. Estadoi = 1;
  2.             Origen2.AddNew();
  3.  
         
Para guardar los cambios (dependiendo de si es insercion o edicion...)

         
Código: Text
  1. if (Estadoi == 1)
  2.             {
  3.                 bCancel.Visible = false;
  4.                 DataRow row = Dataset2.Tables[0].NewRow();
  5.                 row["Concepto"] = Conceptoi.Text;
  6.                 row["Tipo"] = cbTipoi.Text;
  7.                 row["Importee"] = Importeei.Text;
  8.                 row["Importel"] = Importeli.Text;
  9.                 row["Fecha"] = Fechai.Text;
  10.                 Dataset2.Tables[0].Rows.Add(row);
  11.                 Conexion.Open();
  12.                 Conexion.Close();
  13.             }
  14.             else
  15.             {
  16.                 DataRow row = Dataset2.Tables[0].Rows[Origen2.Position];
  17.                 row.BeginEdit();
  18.                 row["Concepto"] = Conceptoi.Text;
  19.                 row["Tipo"] = cbTipoi.Text;
  20.                 row["Importee"] = Importeei.Text;
  21.                 row["Importel"] = Importeli.Text;
  22.                 row["Fecha"] = Fechai.Text;
  23.                 row.EndEdit();
  24.             }
  25.             Validar = new OleDbCommandBuilder(Adaptador);
  26.             Adaptador.Update(Dataset2, "Ingresos");
  27.             Estadoi = 0;
  28.  

Para eliminar un registro (el actual)

           
Código: Text
  1.  Dataset.Tables[0].Rows.RemoveAt(Origen.Position);
  2.             Validar = new OleDbCommandBuilder(Adaptador);
  3.             Validar.GetDeleteCommand();
  4.             Adaptador.Update(Dataset, "Gastos");
  5.  
         
Bueno...la cosa es que no tengo muy claro todo esto...porque he ido pillando de aqui y alli y viendo lo que pasaba...pero a la hora de eliminar,
me elimina en la pantalla pero no se refleja en la BD.

Aqui es donde pido vuestra ayuda...lo que he puesto esta medianamente bien? o estoy usando mal las cosas...
Como puedo reflejar los cambios en la BD a la hora de eliminar...pq a la hora de editar si me funciona!!!

Tened presente que en c++ era todo mas facil...estaba el TABLE y el DATASOURCE como metodo de conexion y ya esta...todo se hacia con los metodos del table...

...pero aqui hay tantos objetos nuevos que me pierdo...

MIL GRACIAS

alt126

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Manejo de una BD Access y c#
« Respuesta #1 en: Martes 3 de Febrero de 2009, 12:26 »
0
Alguien me puede dar aunque sea un poco de orientacion??

GRACIAS