Foros del Web » Programación para mayores de 30 ;) » .NET »

DataAdapter que recupere id al hacer insert

Estas en el tema de DataAdapter que recupere id al hacer insert en el foro de .NET en Foros del Web. Hola Estoy usando un dataadapter para agregar un registro a la bbdd. Tal que así: da.InsertCommand = builder.GetInsertCommand(); da.UpdateCommand = builder.GetUpdateCommand(); da.DeleteCommand = builder.GetDeleteCommand(); da.Update(dt); ...
  #1 (permalink)  
Antiguo 11/08/2011, 17:24
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 0
DataAdapter que recupere id al hacer insert

Hola

Estoy usando un dataadapter para agregar un registro a la bbdd. Tal que así:
da.InsertCommand = builder.GetInsertCommand();
da.UpdateCommand = builder.GetUpdateCommand();
da.DeleteCommand = builder.GetDeleteCommand();
da.Update(dt);

EL problema es que cuando lo agrega ok el registro sigue teniendo su campo id como null

He problado
da.AcceptChangesDuringUpdate = true; y da.MissingSchemaAction = MissingSchemaAction.AddWithKey; sin ningún resultado

No uso una SQL para hacer el insert sino que recupero de la bbdd, modifico y luego hago update mediante el datatadapter, por lo que este método no me sirve: http://stackoverflow.com/questions/5...ntity-in-mysql

He leído por ahí inventos de después del insert hacer una consulta para obtener el id max de la tabla y cosas por el estilo. Un ejemplo aquí: http://www.eggheadcafe.com/software/...ansaction.aspx

PEro me resisto a tener que hacer de nuevo una consulta para saber el max... no hay nada que indique al dataadapter que ha de actualizar los campos del dataset después de hacer el insert para que el campo id tenga valor?

Gracias
  #2 (permalink)  
Antiguo 11/08/2011, 17:32
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: DataAdapter que recupere id al hacer insert

podrias mostrar todo tu codigo para enterder mejor el problema
__________________
la programación es tan grande como la imaginación (+.+)
  #3 (permalink)  
Antiguo 12/08/2011, 08:09
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: DataAdapter que recupere id al hacer insert

public void UpdateMySqlWithDataTable(string conn, DataTable table)
{
try
{
SqlConnect myConn = new SqlConnect(conn);
MySqlConnection _myConn = myConn.ConnectToMySQL(conn);
MySqlDataAdapter da = new MySqlDataAdapter("select * from tbl_cr_control_report", _myConn);
DataSet ds = new DataSet();
ds.Tables.Add(table);
da.Fill(ds,"Test");
da.AcceptChangesDuringFill = true; //No funciona
MySqlCommandBuilder cmd = new MySqlCommandBuilder(da);
da.UpdateCommand = cmd.GetUpdateCommand();
da.InsertCommand = cmd.GetInsertCommand();
_myConn.Open();
da.Update(ds, "Test");
_myConn.Close();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
}
  #4 (permalink)  
Antiguo 12/08/2011, 08:56
 
Fecha de Ingreso: agosto-2011
Ubicación: Buenos Aires
Mensajes: 78
Antigüedad: 12 años, 8 meses
Puntos: 10
Respuesta: DataAdapter que recupere id al hacer insert

¿Probaste haciendolo en dos operaciones distintas?
Me refiero a abrir conexión, impactar en la DB, cerrar conexión.
Después abrir conexión, tomar datos, cerrar conexión.
__________________
www.orientadoanet.com
  #5 (permalink)  
Antiguo 12/08/2011, 10:26
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: DataAdapter que recupere id al hacer insert

Supongo que t refierres a volver ha hacer otra consulta para comprobar el id que me isertó... si claro así funciona pero me quiero ahorrar la 2a consulta pq. la veo innecesaria
  #6 (permalink)  
Antiguo 12/08/2011, 11:52
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: DataAdapter que recupere id al hacer insert

si los procedimientos los realizas mediante controles textbox etc entonces deberas hacer tu consulta a obtener el max e insertarlo directamente si utilizas una grilla, al seleccionar un registro puedes saber su posision con renglon = Me.DataGridView1.CurrentRow.Index pero igual necesitaras una consulta para realizar las funciones inser y update.

ahora, hablas de actualizar, donde esta tu cadena update y porque manejas 2 conexxiones cnn y _myconn?
__________________
la programación es tan grande como la imaginación (+.+)
  #7 (permalink)  
Antiguo 13/08/2011, 03:11
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: DataAdapter que recupere id al hacer insert

NO hago ninguna consulta "insert into..." Hay varias maneras de hacerloy la q yo uso una en que no hay sentencias insert ni procedimientos almacenados... directamente recupero con un dataapdter (método fill) la tabla en un dataset. Modifico el dataset y luego llamo al Update del dataadapter. Por eso no hay cadena de update sino que se usa 'da.Update(ds, "Test");'

"porque manejas 2 conexxiones cnn y _myconn?".. el trozo de código es solo un ejemplo de como usar un dataadapter

Etiquetas: bd, insert, net, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:55.