Sunteți pe pagina 1din 5

perro.. yo no usaria dataset de partida..

estan obsoletos hasta por la misma microsoft


ya que para ellos ,lo mas rapido y mejor es LinqToSql o el entities framework... yo ,en
todo caso uso listas genericas.. el rendimiento es la raja!!
puta te paso mi clase...es rebuena
Cdigo:

using
using
using
using
using

System;
System.Configuration;
System.Data;
System.Data.Common;
System.Data.SqlClient;

namespace Datos
{
public sealed class BaseDatos
{
private
private
private
private
private

SqlConnection conexion = null;


SqlCommand comando = null;
SqlTransaction transaccion = null;
string cadenaConexion;
static DbProviderFactory factory = null;

public BaseDatos()
{
Configurar();
}
private void Configurar()
{
try
{
cadenaConexion =
ConfigurationManager.ConnectionStrings["VotoOnline"].ConnectionString;
BaseDatos.factory =
DbProviderFactories.GetFactory("System.Data.SqlClient");
}
catch (ConfigurationException ex)
{
throw new ApplicationException("Error al Configurar", ex);
}
}
public void Desconectar()
{
if (conexion.State.Equals(ConnectionState.Open))
{
conexion.Close();
}
}
public void Conectar()
{
if (conexion != null &&
!conexion.State.Equals(ConnectionState.Closed))
{

throw new ApplicationException("Conexion Abierta");


}
try
{
if (this.conexion == null)
{
conexion = (SqlConnection)factory.CreateConnection();
conexion.ConnectionString = cadenaConexion;
}
conexion.Open();
}
catch (DataException ex)
{
throw new ApplicationException("Error al Conectarse a la BD");
}
}
public void CrearComando(string storedProcedure)
{
comando = (SqlCommand)factory.CreateCommand();
comando.Connection = conexion;
comando.CommandType = CommandType.StoredProcedure;
comando.CommandText = storedProcedure;
if (transaccion != null)
{
comando.Transaction = transaccion;
}
}
public void AsignarParametroNulo(string nombre)
{
AsignarParametro(nombre, null);
}
public void AsignarParametroCadena(string nombre, string valor)
{
AsignarParametro(nombre, valor);
}
public void AsignarParametroDecimal(string nombre, decimal valor)
{
AsignarParametro(nombre, valor);
}
public void AsignarParametroEntero(string nombre, int valor)
{
AsignarParametro(nombre, valor.ToString());
}
public void AsignarParametroFecha(string nombre, DateTime valor)
{
AsignarParametro(nombre, valor);
}
public void AsignarParametroGuid(string nombre, Guid valor)
{

AsignarParametro(nombre, valor);
}
public void AsignarParametroLong(string nombre, long valor)
{
AsignarParametro(nombre, valor.ToString());
}
public void AsignarParametroBool(string nombre, bool valor)
{
AsignarParametro(nombre, valor);
}
public void AsignarParametroFloat(string nombre, float valor)
{
AsignarParametro(nombre, valor);
}
private void AsignarParametro(string nombre, object valor)
{
comando.Parameters.AddWithValue(nombre, valor);
}
public DbDataReader EjecutarConsulta()
{
return comando.ExecuteReader();
}
public byte EjecutarEscalar()
{
byte escalar = 0;
try
{
escalar = byte.Parse(comando.ExecuteScalar().ToString());
}
catch (Exception ex)
{
throw new ApplicationException("Error al ejecutar un escalar.",
ex);
}
return escalar;
}
public int EjecutarComando()
{
return comando.ExecuteNonQuery();
}
public void ComenzarTransaccion()
{
if (transaccion == null)
{
transaccion = conexion.BeginTransaction();
}
}

public void CancelarTransaccion()


{
if (transaccion != null)
{
transaccion.Rollback();
}
}
public void ConfirmarTransaccion()
{
if (transaccion != null)
{
transaccion.Commit();
}
}
public void LiberarRecursos()
{
conexion.Dispose();
}
}

y se usaria asi
Cdigo:
public bool InsertarAlgo(objetoParametro cc)
{
BaseDatos bd = new BaseDatos();
{
bool respuesta = false;
DateTime dt = DateTime.Now;
try
{
bd.Conectar();
bd.ComenzarTransaccion();
bd.CrearComando("nombre preocedimeinto alamacenado..ojo ");
bd.AsignarParametroFecha("@Fecha", dt);
bd.AsignarParametroEntero("@entero", 1);
byte escalar = (byte)bd.EjecutarComando();
if (escalar > 0)
{
bd.ConfirmarTransaccion();
respuesta = true;
}
}
catch (Exception e)
{
bd.CancelarTransaccion();
}
finally
{
bd.Desconectar();
bd.LiberarRecursos();

}
return respuesta;
}
}

y pa llenar el listo box... solo le pones como fuente de datos una collecion y luego
databind
listbo.DataSource=collecion que creeas tu;
listbo.DataBind();
saludos

S-ar putea să vă placă și