Ok, después de ver la de Dawn of the Dead… que por cierto está muy buena… decidí postear este ejemplo de código de un proyecto que actualmente estamos desarrollando.
Esta es la clase base, esta clase contiene dos propiedades principales, que son ConnectionString y ErrorMessage. El ConnectionString lo vamos a estar utilizando para tener una referencia a la cadena de conexión, y el ErrorMessage nos va a servir para guardar el mensaje de error en caso de que haya existido alguna excepción
1 | namespace Intellekt.Code.DataObjects |
2 | { |
3 | public class BaseComponent |
4 | { |
5 | private string _connectionString = String.Empty; |
6 | private string _errorMessage = String.Empty; |
7 | |
8 | public BaseComponent() : this (String.Empty) |
9 | {} |
10 | public BaseComponent(string ConnectionString) |
11 | { |
12 | _connectionString = ConnectionString; |
13 | } |
14 | public string ConnectionString |
15 | { |
16 | set{_connectionString = value;} |
17 | get{return _connectionString;} |
18 | } |
19 | public string ErrorMessage |
20 | { |
21 | set{_errorMessage = value;} |
22 | get{return _errorMessage;} |
23 | } |
24 | } |
25 | } |
De esta clase vamos a heredar las siguientes clases, para que siempre tengan estas dos propiedades. Abajo, hay un ejemplo del objeto de Estados para que vean como se implementa:
1 | namespace Intellekt.Code.DataObjects |
2 | { |
3 | public class Estados : BaseComponent |
4 | { |
5 | public Estados() : base() |
6 | {} |
7 | public Estados(string ConnectionString) : base(ConnectionString) |
8 | {} |
9 | public DataTable GetRows() |
10 | { |
11 | base.ErrorMessage = String.Empty; |
12 | DataTable dt = new DataTable(); |
13 | try |
14 | { |
15 | dt = SqlHelper.ExecuteDataset(base.ConnectionString, «intellektdb.spS_Estados»).Tables[0]; |
16 | } |
17 | catch(Exception ex) |
18 | { |
19 | base.ErrorMessage = String.Format(«DateTime:{0} Class:{1} Message: {2}», DateTime.Now, this.ToString(), ex.Message); |
20 | } |
21 | return dt; |
22 | } |
23 | public bool Insert(string nombre) |
24 | { |
25 | int _rows = 0; |
26 | base.ErrorMessage = String.Empty; |
27 | SqlConnection cn = new SqlConnection(base.ConnectionString); |
28 | try |
29 | { |
30 | SqlCommand cmd = SqlHelper.CreateCommand(cn, «intellektdb.spI_Estados», «nombre»); |
31 | cmd.Parameters[«@nombre»].Value = nombre; |
32 | cn.Open(); |
33 | _rows = cmd.ExecuteNonQuery(); |
34 | } |
35 | catch (Exception ex) |
36 | { |
37 | base.ErrorMessage = String.Format(«DateTime:{0} Class:{1} Message: {2}», DateTime.Now, this.ToString(), ex.Message); |
38 | } |
39 | finally |
40 | { |
41 | if (cn.State == ConnectionState.Open) |
42 | cn.Close(); |
43 | } |
44 | return _rows != 0; |
45 | } |
46 | public bool Delete(int idEstado) |
47 | { |
48 | int _rows = 0; |
49 | base.ErrorMessage = String.Empty; |
50 | SqlConnection cn = new SqlConnection(base.ConnectionString); |
51 | try |
52 | { |
53 | SqlCommand cmd = SqlHelper.CreateCommand(cn, «intellektdb.spD_EstadosById», «idEstado»); |
54 | cmd.Parameters[«@idEstado»].Value = idEstado; |
55 | |
56 | cn.Open(); |
57 | _rows = cmd.ExecuteNonQuery(); |
58 | } |
59 | catch(Exception ex) |
60 | { |
61 | base.ErrorMessage = String.Format(«DateTime:{0} Class:{1} Message: {2}», DateTime.Now, this.ToString(), ex.Message); |
62 | } |
63 | finally |
64 | { |
65 | if (cn.State == ConnectionState.Open) |
66 | cn.Close(); |
67 | } |
68 | return _rows != 0; |
69 | } |
70 | } |
71 | } |
Todavía faltan los métodos GetRow(int idEstado), Update(int idEstado, string Nombre) pero ya no los incluí por espacio, y básicamente lo único que cambia ahí es el nombre del storeproc y de los parámetros.
¿Que opinan de este objeto de datos?
Siento que puede ser mejorado de muchas maneras, pero es básicamente para demostrar lo útil y sencillo que se podría hacer aplicaciones de este tipo. Este mismisimo objeto de datos se los enseñé en la Academia .NET que impartí para Softtek el mes pasado…
¿Comentarios?
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.