insert a una tabla desde datagridview

06/01/2010 - 23:04 por leonardo | Informe spam
hola
tengo un datagridview cargado con datos y quiero hacer un insert a una
tabla de acces con los datos del datagrid
el problema que tengo es que sólo me inserta en la tabla el primer dato
del datagrid, repetido tantas filas tenga el datagrid
Aquí va el código del evento click de un botón que dispara la carga.
Agradezco la ayuda
leonardo

private void button3_Click(object sender, EventArgs e)
{
OleDbCommand comando = new OleDbCommand();
comando.Connection = crearConexion();
try
{
for (int i = 0; i < dgvExcel.Rows.Count-1; i++)
{
OleDbParameter par = new OleDbParameter("@var",
OleDbType.VarChar, 50);
par.Value =
dgvExcel.Rows[i].Cells[0].Value.ToString();
comando.CommandText = "insert into tabla (nombre)
values (@var)";
comando.Parameters.Add(par);
comando.ExecuteNonQuery();
}
MessageBox.Show("Registros agregados satisfactoriamente.");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
comando.Connection.Close();
}
} //fin button3_Click

el método crearConexion es:

public OleDbConnection crearConexion()
{
OleDbConnection con = new OleDbConnection();
con.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=torneosgim.mdb";
try
{
con.Open();
}
catch (Exception e)
{
throw e;
}
return con;
}
 

Leer las respuestas

#1 leonardo
06/01/2010 - 23:16 | Informe spam
bueno, lo he solucionado, no sé si es lo correcto, ya que la forma que
utilizo para hacerlo es abrir y cerrar la conexión para cada uno de los
registros de la tabla, no tengo idea cuán performante es pero funciona.
Espero comentarios
Gracias
Leonardo
Así quedó:

private void button3_Click(object sender, EventArgs e)
{
for (int i = 0; i < dgvExcel.Rows.Count-1; i++)
{
OleDbCommand comando = new OleDbCommand();
comando.Connection = crearConexion();
try
{
OleDbParameter par = new OleDbParameter("@var",
OleDbType.VarChar, 50);
par.Value = dgvExcel.Rows[i].Cells[0].Value.ToString();
comando.CommandText = "insert into gimnastas
(nombre) values (@var)";
comando.Parameters.Add(par);
comando.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
comando.Connection.Close();
}
}
} //fin button3_Click

leonardo escribió:
hola
tengo un datagridview cargado con datos y quiero hacer un insert a una
tabla de acces con los datos del datagrid
el problema que tengo es que sólo me inserta en la tabla el primer dato
del datagrid, repetido tantas filas tenga el datagrid
Aquí va el código del evento click de un botón que dispara la carga.
Agradezco la ayuda
leonardo

private void button3_Click(object sender, EventArgs e)
{
OleDbCommand comando = new OleDbCommand();
comando.Connection = crearConexion();
try
{
for (int i = 0; i < dgvExcel.Rows.Count-1; i++)
{
OleDbParameter par = new OleDbParameter("@var",
OleDbType.VarChar, 50);
par.Value = dgvExcel.Rows[i].Cells[0].Value.ToString();
comando.CommandText = "insert into tabla (nombre)
values (@var)";
comando.Parameters.Add(par);
comando.ExecuteNonQuery();
}
MessageBox.Show("Registros agregados satisfactoriamente.");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
comando.Connection.Close();
}
} //fin button3_Click

el método crearConexion es:

public OleDbConnection crearConexion()
{
OleDbConnection con = new OleDbConnection();
con.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=torneosgim.mdb";
try
{
con.Open();
}
catch (Exception e)
{
throw e;
}
return con;
}

Preguntas similares