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
OleDbConnection Conexion;
OleDbDataReader Campo;
OleDbCommand Comando;
OleDbDataAdapter Adaptador;
OleDbCommandBuilder Validar;
BindingSource Origen;
BindingSource Origen2;
DataSet Dataset;
DataSet Dataset2;
Cadena de conexion
Conexion = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; User Id=; Password=; Data Source=C:db1.mdb");
Esto es lo que hago para leer de una consulta y mostrar en un componente de la interfaz.
Conexion.Open();
Comando = Conexion.CreateCommand();
Comando.CommandText = "SELECT Nombre FROM Tipos_Gastos";
Campo = Comando.ExecuteReader();
while (Campo.Read())
{
cbTipo.Items.Add(Campo.GetString(0));
}
Campo.Close();
Conexion.Close();
Esto para asociar los componentes de la interfaz con una tabla.
Conexion.Open();
Comando.CommandText = "Select * FROM Gastos";
Comando.ExecuteNonQuery();
Adaptador = new OleDbDataAdapter(Comando);
Dataset = new DataSet();
Adaptador.Fill(Dataset, "Gastos");
Origen = new BindingSource(Dataset, "Gastos");
Importel.DataBindings.Add("Text", Origen, "Importel", true);
Importee.DataBindings.Add("Text", Origen, "Importee", true);
cbTipo.DataBindings.Add("Text", Origen, "Tipo", true);
Fecha.DataBindings.Add("Text", Origen, "Fecha", true);
Concepto.DataBindings.Add("Text", Origen, "Concepto", true);
Campo.Close();
Conexion.Close();
Para moverme por los registros.
Para comenzar una insercion de datos
Estadoi = 1;
Origen2.AddNew();
Para guardar los cambios (dependiendo de si es insercion o edicion...)
if (Estadoi == 1)
{
bCancel.Visible = false;
DataRow row = Dataset2.Tables[0].NewRow();
row["Concepto"] = Conceptoi.Text;
row["Tipo"] = cbTipoi.Text;
row["Importee"] = Importeei.Text;
row["Importel"] = Importeli.Text;
row["Fecha"] = Fechai.Text;
Dataset2.Tables[0].Rows.Add(row);
Conexion.Open();
Conexion.Close();
}
else
{
DataRow row = Dataset2.Tables[0].Rows[Origen2.Position];
row.BeginEdit();
row["Concepto"] = Conceptoi.Text;
row["Tipo"] = cbTipoi.Text;
row["Importee"] = Importeei.Text;
row["Importel"] = Importeli.Text;
row["Fecha"] = Fechai.Text;
row.EndEdit();
}
Validar = new OleDbCommandBuilder(Adaptador);
Adaptador.Update(Dataset2, "Ingresos");
Estadoi = 0;
Para eliminar un registro (el actual)
Dataset.Tables[0].Rows.RemoveAt(Origen.Position);
Validar = new OleDbCommandBuilder(Adaptador);
Validar.GetDeleteCommand();
Adaptador.Update(Dataset, "Gastos");
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