Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2012, 03:25
Avatar de halexander
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 =)