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

Almacenar ultimo Id de una tabla en variable de c#

Estas en el tema de Almacenar ultimo Id de una tabla en variable de c# en el foro de .NET en Foros del Web. Hola amigos!! tengo un problema al almacenar el ultimo id recuperado de una tabla de sql server, ojala me puedan ayudar con este problema. Gracias!! ...
  #1 (permalink)  
Antiguo 09/04/2012, 03:25
Avatar de halexander  
Fecha de Ingreso: abril-2010
Ubicación: En algun lugar de mexico xD
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
Pregunta Almacenar ultimo Id de una tabla en variable de c#

Hola amigos!! tengo un problema al almacenar el ultimo id recuperado de una tabla de sql server, ojala me puedan ayudar con este problema.

Gracias!!

Micodigo es el siguiente:
Código C++:
Ver original
  1. public static bool Genero(Genero objGenero, Artista objArtista)
  2.         {
  3.             bool resultado = false;
  4.  
  5.             //Se crea la cadena deconexion
  6.             string CadenaConexion = ConfigurationManager.ConnectionStrings["audvid"].ConnectionString;//Conexion de BD en archivo app.config
  7.  
  8.             if (CadenaConexion == null) return resultado;
  9.  
  10.             //Ahora creamos lo objetos de conexion
  11.             SqlConnection Cnx = new SqlConnection(CadenaConexion);
  12.             SqlCommand Cmd = new SqlCommand(string.Empty, Cnx);
  13.             SqlParameter Paramer;
  14.             SqlTransaction Transac;
  15.  
  16.             SqlDataAdapter Adapter = new SqlDataAdapter(string.Empty, Cnx);
  17.             DataSet DSet = new DataSet();
  18.             int IdGenero = 0;          
  19.  
  20.             //Ejecucion del query. Bloque la conexion para evitar la concurrencia
  21.             using (Cnx)
  22.             {
  23.                 //Checare el acceso a datos
  24.                 try
  25.                 {
  26.                     Cnx.Open();
  27.                     Transac = Cnx.BeginTransaction();                                
  28.                 }
  29.  
  30.                 catch (SqlException ex)
  31.                 {
  32.                     BitacoraTexto.Escribe(ex.Message);
  33.                     return resultado;
  34.                 }
  35.                 //Con la ejecucion abierta ejecutamos el query usando transacciones.
  36.                 try
  37.                 {
  38.                     //Preparamos comando de transaccion
  39.                     Cmd.Transaction = Transac;
  40.                     //leemos la consulta.
  41.                     Cmd.CommandText = SqlInsert.Genero;
  42.  
  43.                     //Agregamos parametros a esa consulta
  44.                     Paramer = new SqlParameter("@Genero", objGenero.NombreGenero);
  45.                     Cmd.Parameters.Add(Paramer);
  46.  
  47.                     //Ejecutamos query
  48.                     Cmd.ExecuteNonQuery();
  49.                     Cmd.Parameters.Clear();
  50.  
  51. //Obtengo Id del registro recien insertado
  52.                     Cmd.CommandText = new SqlSelect().RecuperaIdGenero;
  53.                     Adapter.SelectCommand = Cmd;
  54.                     Adapter.SelectCommand.Connection = Cnx;
  55.                     Adapter.Fill(DSet);
  56.                     IdGenero = (int)DSet.Tables[0].Rows[0][0];//La conversión especificada no es válida.
El error que me sale es en la ultima linea que es el siguiente:

//La conversión especificada no es válida.

Mi query es el siguiente:

Código C++:
Ver original
  1. class SqlSelect
  2.     {
  3.         public string RecuperaIdGenero
  4.         {
  5.             get
  6.             {
  7.                 return "SELECT ISNULL(MAX(IdGenero),0) FROM Genero";
  8.             }
  9.         }
  10.     }
El cual funciona, realmente me regresa el ultimo ID de la tabla, lo probe en sqlserver y sin problemas, el problema esta es como almaceno ese dato en mi variable.

De antemano muchas gracias =)
  #2 (permalink)  
Antiguo 09/04/2012, 07:17
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Almacenar ultimo Id de una tabla en variable de c#

Hola halexander, trata colocando así :
Código C:
Ver original
  1. IdGenero =  Convert.ToInt32(DSet.Tables[0].Rows[0][0].ToString())
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 09/04/2012, 08:17
Avatar de ramirezmario7  
Fecha de Ingreso: febrero-2008
Ubicación: Medellín
Mensajes: 336
Antigüedad: 16 años, 2 meses
Puntos: 56
Respuesta: Almacenar ultimo Id de una tabla en variable de c#

hola.

Ahi mirando el codigo no se para que agregas el parametro a la consulta, si en la clase donde tienes el selec en ningun lado tienes alguna condicion ahi.

"SELECT ISNULL(MAX(IdGenero),0) FROM Genero";

Otra cosa esto si te devuelve lo que es

Cmd.CommandText = SqlInsert.Genero;

segun veo tu clase no seria algo asi

Cmd.CommandText = SqlSelect.RecuperaIdGenero;

otra cosa, seia mas practico usar el ExecuteScalar del command ya que solo necesitas un campo de la base de datos.
__________________
Mario Ramírez
Desarrollador .NET MCTS
https://www.mcpvirtualbusinesscard.c...nteractivecard
  #4 (permalink)  
Antiguo 10/04/2012, 13:03
Avatar de halexander  
Fecha de Ingreso: abril-2010
Ubicación: En algun lugar de mexico xD
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
Respuesta: Almacenar ultimo Id de una tabla en variable de c#

Cita:
Iniciado por Aquaventus Ver Mensaje
Hola halexander, trata colocando así :
Código C:
Ver original
  1. IdGenero =  Convert.ToInt32(DSet.Tables[0].Rows[0][0].ToString())
Saludos!.
Gracias!! Muchas gracias!! esta fue la solución!! =)

Etiquetas: c-sharp, insert, query, recupera-id, select, ultimo-id
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 20:47.