Insertar en base de datos

08/10/2006 - 22:23 por kdokdo | Informe spam
Hola, a ver si alguien tiene alguna idea de pq no me funciona el
siguiente código.

Resulta que quiero insertar datos en una base de datos.
Antes lo hacía sin todo esto de las transacciones, pero luego pensé
que igual si no le hacía un commit no se guardaba en la base de datos.
Pues bueno, así tampoco. No hay manera de insertar filas en las tablas
de la base de datos.

Alguna idea? Cualquier cosa aunque no tenga nada que ver con mi código
me puede ayudar.
Estoy desesperada!!!

Os dejo el código:

foreach (DataGridViewRow dgvr in ordenesDataGridView.Rows)
{
SqlCommand command = ordenesTableAdapter.Connection.CreateCommand();
SqlTransaction transaction;

ordenesTableAdapter.Connection.Open();
transaction = ordenesTableAdapter.Connection.BeginTransaction();

command.Connection = ordenesTableAdapter.Connection;
command.Transaction = transaction;

try
{
this.ordenesTableAdapter.Insert(1, "Calibrar");
transaction.Commit();

MessageBox.Show("Insert OK");
}
catch (Exception ex)
{
MessageBox.Show("Fallo en la transacción.");

try
{
transaction.Rollback();
}
catch (Exception ex2)
{
MessageBox.Show("Fallo en rollback");
}
}

ordenesTableAdapter.Connection.Close();
}

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion [MVP]
09/10/2006 - 08:47 | Informe spam
wrote in message
news:
Hola, a ver si alguien tiene alguna idea de pq no me funciona el
siguiente código.

Resulta que quiero insertar datos en una base de datos.



¿No estarás Sql Express con una Instancia de Usuario? A ver si lo que te
pasa es que tienes el .mdf en el directorio del fuente; cuando lo ejecutas
el Visual Studio saca una copia al directorio ejecutable, y la inserción se
produce ahi. Pero luego miras en la copia original y, claro, ahi no se ha
insertado ningún registro.

Aparte de eso, en tu código tienes esto:

SqlCommand command = ordenesTableAdapter.Connection.CreateCommand();
[...]
command.Connection = ordenesTableAdapter.Connection;
command.Transaction = transaction;



No comprendo para qué creas este command si luego no lo usas para nada,
ya que la inserción la realizas llamando al .Insert del TableAdapter. Esto
no tendría por qué impedir que la inserción se realice, pero te lo menciono
porque me ha parecido extraño.
Respuesta Responder a este mensaje
#2 kdokdo
09/10/2006 - 16:54 | Informe spam
Eres mi salvador. En efecto me pasa lo que tu dices.
Porque si intento insertar dos tuplas con la misma clave primaria se
queja pero luego resulta que no se ha guardado nada.
Como debería hacer para que se me cambiase en el la copia original?

Muchichichichisimas gracias!
(lo del error de código ya me lo miraré, la verdad es que he hecho
tantos cambios que está aguantado por pinzas)


Alberto Poblacion [MVP] ha escrito:

wrote in message
news:
> Hola, a ver si alguien tiene alguna idea de pq no me funciona el
> siguiente código.
>
> Resulta que quiero insertar datos en una base de datos.

¿No estarás Sql Express con una Instancia de Usuario? A ver si lo que te
pasa es que tienes el .mdf en el directorio del fuente; cuando lo ejecutas
el Visual Studio saca una copia al directorio ejecutable, y la inserción se
produce ahi. Pero luego miras en la copia original y, claro, ahi no se ha
insertado ningún registro.

Aparte de eso, en tu código tienes esto:

> SqlCommand command = ordenesTableAdapter.Connection.CreateCommand();
> [...]
> command.Connection = ordenesTableAdapter.Connection;
> command.Transaction = transaction;

No comprendo para qué creas este command si luego no lo usas para nada,
ya que la inserción la realizas llamando al .Insert del TableAdapter. Esto
no tendría por qué impedir que la inserción se realice, pero te lo menciono
porque me ha parecido extraño.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida