• Domingo 22 de Diciembre de 2024, 18:37

Autor Tema:  Utilizando El Sqldatareader  (Leído 883 veces)

JdAlpine

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Utilizando El Sqldatareader
« en: Martes 14 de Marzo de 2006, 20:33 »
0
Buenas, estoy realizando las siguientes funciones:

//id=1, sqlSelect="Select *from Table where id=@id"

public consulta (int id, string sqlSelect){
SqlDataReader reader=null;
 try {
       conexionBD.Open();
       SqlCommand sqlSelect= new SqlCommand(sqlSelect,conexionBD);
       sqlSelect.Parameters.Add("@id",SqlDbType.Int);
       sqlSelect.Parameters["@id"].Value=id;

       reader=sqlSelect.ExecuteReader(CommandBehavior.CloseConnection);
     }
  while(reader.Read()) {
     if (!reader.IsDBNull(0))    
             id = (int)(reader["id"]);
     if (!reader.IsDBNull(1))
            name = (string)(reader["name"]);
     if (!reader.IsDBNull(2))
            apellido = (string)(reader["apellido"]);
   }
   grabar(name,apellido);
}      

public grabar(string name, string apellido){

  try {
        conexionBD.Close();
        conexionBD.Open();
        SqlCommand sqlInsert = new SqlCommand("Select  max(id)+1 From
                                                                          Table",conexionBD);
            
        SqlDataReader identificadorReader = sqlInsert.ExecuteReader();
        if (identificadorReader.Read()) {
              if (!identificadorReader.IsDBNull(0))
     id = identificadorReader.GetInt32(0);
              else
     id = 1;
             }
        else
              id = 1;
        identificadorReader.Close();
       
        sqlInsert.CommandText="Insert into Table (id,name,apellido) Values
                                              (@id,@name,@apellido)";      
        sqlInsert.Parameters.Add("@id",SqlDbType.Int);
        sqlInsert.Parameters.Add("@name",SqlDbType.VarChar);
        sqlInsert.Parameters.Add("@apellido",SqlDbType.VarChar);
        sqlInsert.ExecuteNonQuery();
}

Bueno lo que quiero realizar, es una duplicacion de regristros de una tabla. De acuerdo a las funciones anteriores, logro duplicar el registro, pero solo 1 es decir. si la funcion consulta me retorna 3 regristros, solo duplico el primer registro, pues cuando retorna la funcion a while(reader.Read()) sale por que no encuentra mas registros.

REalmente no se que estare haciendo mal, o si este procedimiento es valedero, espero pueden colaborarme....

gracias

Juan D B)