• Martes 21 de Abril de 2026, 09:48

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - SGS

Páginas: [1]
1
C# / Re: Duda general sobre planteamiento de proyecto
« en: Viernes 19 de Marzo de 2010, 22:59 »
Simplemente estoy intentando hacer una clase para la gestión de acceso a datos. Esta clase me permitiría leer, escribir, modificar, etc obviando los datasets, etc. Simplemente es saber si os parece una forma correcta de desarrollar a través de una clase como esta en c#.

2
C# / Re: Duda general sobre planteamiento de proyecto
« en: Jueves 18 de Marzo de 2010, 22:35 »
Y este código como lo veis?

quería cambiar el dataSet del método de obtener campos por un hashtable.

Código: C#
  1.  
  2. using System;
  3. using System.Data;
  4. using System.Data.Common;
  5. using System.Data.SqlServerCe;
  6. using System.Windows.Forms;
  7. using System.Collections;
  8.  
  9. namespace GeMa.Clases.bbdd
  10. {
  11.     class BBDD
  12.     {
  13.  
  14.         private static volatile BBDD _instance = null;
  15.  
  16.         //parámetros de conextión
  17.         public static SqlCeEngine objEg;
  18.         public static SqlCeConnection objCon;
  19.         //public static SqlCeDataReader reader;
  20.         public static DataSet dataSet;
  21.         public static SqlCeDataAdapter dataAdapter;
  22.  
  23.         //----------------------------------------------------------
  24.         // PATRON SINGLETON PARA LA CLASE BBDD
  25.         //----------------------------------------------------------
  26.         public static BBDD getInstance()
  27.         {
  28.             if (_instance == null)
  29.             {
  30.                 _instance = new BBDD();
  31.                
  32.             }
  33.             return _instance;
  34.         }
  35.  
  36.         //----------------------------------------------------------
  37.         // CONSTRUCTOR DE LA CLASE
  38.         //----------------------------------------------------------
  39.         protected BBDD() { }
  40.  
  41.         //----------------------------------------------------------
  42.         // CONEXIÓN CON LA BBDD
  43.         //----------------------------------------------------------
  44.         public static bool conectar()
  45.         {
  46.             bool conexion = true;
  47.            
  48.             //Indicamos el origen de datos
  49.             objEg = new SqlCeEngine("Data Source=|DataDirectory|\BBDD\GeMaDataBase.SDF");
  50.             objCon = new SqlCeConnection("Data Source=|DataDirectory|\BBDD\GeMaDataBase.SDF");
  51.  
  52.             try
  53.             {
  54.                 objCon.Open();
  55.             }
  56.             catch (SqlCeException ex)
  57.             {
  58.                 MessageBox.Show(ex.Message);
  59.                 conexion = false;
  60.             }
  61.  
  62.             return conexion;
  63.  
  64.         }
  65.         //----------------------------------------------------------
  66.         // CERRAR CONEXIÓN
  67.         //----------------------------------------------------------
  68.         public static void desconectar()
  69.         {
  70.             objCon.Close();
  71.         }
  72.         //----------------------------------------------------------
  73.         // OBTENER CAMPOS
  74.         //----------------------------------------------------------
  75.         public static void obtenerCamposTabla(string tabla, string[] aCampos, string Where)
  76.         {
  77.             //preparamos la query
  78.             string sqlQuery = "SELECT ";
  79.  
  80.             //obtenemos los campos
  81.             for (int i = 0; i < aCampos.Length; i++)
  82.             {
  83.                 string campo = aCampos[i];
  84.                 sqlQuery += campo + ",";
  85.             }
  86.  
  87.             //eliminamos la última coma
  88.             sqlQuery = sqlQuery.Remove(sqlQuery.Length - 1, 1);
  89.  
  90.             sqlQuery +=" FROM "+tabla+" WHERE 1=1 ";
  91.  
  92.             if (Where!="")
  93.             {
  94.                 sqlQuery += Where;
  95.             }
  96.  
  97.             dataAdapter = new SqlCeDataAdapter(sqlQuery, objCon);
  98.             dataSet = new DataSet();
  99.             dataAdapter.Fill(dataSet,tabla);
  100.         }
  101.         //----------------------------------------------------------
  102.         // GUARDAR CAMPOS EN TABLA
  103.         //----------------------------------------------------------
  104.         public static bool guardarCamposTabla(string tabla, Hashtable aCampos, string id)
  105.         {
  106.             bool procesado = false;
  107.  
  108.             string sqlQuery = "";
  109.  
  110.             //estamos ante un insert
  111.             if (id == "")
  112.             {
  113.  
  114.                 //preparamos la query
  115.                 sqlQuery = "INSERT INTO " + tabla + " (";
  116.  
  117.                 //obtenemos las columnas
  118.                 foreach (DictionaryEntry campo in aCampos)
  119.                 {
  120.                     sqlQuery += campo.Key + ",";
  121.                 }
  122.  
  123.                 //eliminamos la última coma
  124.                 sqlQuery = sqlQuery.Remove(sqlQuery.Length - 1, 1);
  125.  
  126.                 //cerramos las columnas
  127.                 sqlQuery += ") VALUES (";
  128.  
  129.                 //obtenemos los campos
  130.                 foreach (DictionaryEntry campo in aCampos)
  131.                 {
  132.                     sqlQuery += "'" + campo.Value + "',";
  133.                 }
  134.  
  135.                 //eliminamos la última coma
  136.                 sqlQuery = sqlQuery.Remove(sqlQuery.Length - 1, 1);
  137.  
  138.                 sqlQuery += ")";
  139.  
  140.                
  141.             }
  142.             else //es un update
  143.             {
  144.  
  145.             }
  146.  
  147.             //ejecutamos el query
  148.             try
  149.             {
  150.                 //conectamos con la base de datos
  151.                 BBDD.conectar();
  152.  
  153.                 SqlCeCommand cm = new SqlCeCommand();
  154.                 cm.Connection = objCon;
  155.                 cm.CommandType = CommandType.Text;
  156.                 cm.CommandText = sqlQuery;
  157.                 cm.ExecuteNonQuery();
  158.  
  159.                 procesado = true;
  160.  
  161.             }
  162.             catch (Exception ex)
  163.             {
  164.                 MessageBox.Show(ex.Message);
  165.             }
  166.             finally
  167.             {
  168.                 aCampos = null;
  169.  
  170.                 //desconectar de la base de datos
  171.                 BBDD.desconectar();
  172.             }
  173.  
  174.             return procesado;
  175.  
  176.         }
  177.     }
  178. }
  179.  
  180.  

3
C# / Re: Duda general sobre planteamiento de proyecto
« en: Miércoles 17 de Marzo de 2010, 21:58 »
En otro foro me han comentado esto:

Citar
Yo no uso dataset ni datatable porque consume recursos, yo lo que utilizo son los objetos coleccion (list<>, collection<>), los cuales guardan la info resultante en memoria y luego los puedo usar. Estos no consumen recursos y me parecen mas manejables que el dataset y datatable

¿qué opinais?

4
C# / Re: Duda general sobre planteamiento de proyecto
« en: Martes 16 de Marzo de 2010, 16:50 »
Lo que necesito es algo sencillo.

un formulario maestro detalle que funcione.

Imagina familias y subfamilias. Tener una opción de dar de alta familias y luego un grid debajo para dar de alta las subfamilias de esa familia.

Estoy probando con SQL CE.

gracias de antemano.

5
C# / Re: Duda general sobre planteamiento de proyecto
« en: Lunes 15 de Marzo de 2010, 23:03 »
¿que código he de poner para crear directamente esa vinculación de maestro detalle?

gracias de antemano.

6
C# / Re: Duda general sobre planteamiento de proyecto
« en: Lunes 15 de Marzo de 2010, 21:38 »
Daniel, gracias por responder...la verdad es que estroy empezando con esto, así que aún me pilla un poco grande todo esto que comentas.
Efectivamente, lo que había creado es una clase que le paso un sql y devuelve un dataset.
La base de datos que estoy usando es SQL CE.

Mi duda en esto no es tanto programar, dado que c# tiene muchas cosas semejantes a php, sino mi duda viene en la creación de una estructura correcta. Es decir, en un dataset he de tener toda la relación completa de todas las tablas de la bbdd? por ejemplo....mi duda tambien es la estructura de proyecto dentro de visual studio, ¿como generar lo datasets tipados? etc.

Estoy probando a desarrollar a través de los wizards, y me estoy topando con problemas en los maestros detalles, dado que en el grid de detalle en sql ce no me guarda el id del maestro, así que la aplicación da error.

Nuevamente mil gracias, y si tendrías un ejemplo de la estructura con la que implementas me ayudaría mucho. si no es mucho pedir, claro está.

7
C# / Duda general sobre planteamiento de proyecto
« en: Sábado 13 de Marzo de 2010, 22:00 »
Que tal amig@s,
Tengo una duda, llevo más de 10 años desarrollando aplicaciones online a través de PHP mediante OOP y patrones MVC. Ahora, he decidido empezar con aplicaciones de escritorio (aunque dudo que vayan a durar mucho, dado que creo que se pasará al SaaS en breve).

El caso es que tengo mis dudas sobre cual es el planteamiento correcto de desarrollo con visual studio a través de c#. Me explico.

a. Yo siempre he estado acostumbrado a crearme la clase de acceso y gestión de base de datos. Esto debería implementarlo así con visual studio, o tendría que seguir los wizard para crear los diferentes formularios.

Yo me he creado una clase que me devuelve un dataset con el sql que le envíe,pero igual estoy perdiendo el tiempo y es mejor tirar por la vía de los wizard.

b. Tengo un poco de lio entre los datareader, datasets y datatableadapter. Como sería el planteamiento correcto.

He cogido muchos manuales de c# y he realizado algun curso de krasis, pero no he encontrado nada sobre algo tan trivial como, cómo plantear correctamente una aplicación desde 0.
______________________________________________________________
Estoy aprendiendo, así que no os siente mal lo que pregunte

Páginas: [1]