Usar sentencia SQL o método de la clase Result - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: Bases de Datos (https://gambas-es.org/forum-6.html) +--- Tema: Usar sentencia SQL o método de la clase Result (/thread-1150.html) |
Usar sentencia SQL o método de la clase Result - Shell - 29-12-2022 Buenas!. Revisando una antigua base de datos que me sirvió para las que estoy liado ahora, encontré que podía hacer la consulta de inserción tanto con la sentencia SQL como un método de la clase Result. Código: 'Si lo hacemos con SQL podemos hacer: Uso más SQL ya que es propio del lenguaje y no de un lenguaje de programación concreto. Imaginar que creo la base de datos para Gambas y ahora hago lo mismo para Python y luego para Java, etc, etc. Entonces cada lenguaje puede tener una clase que ( como veis parece que se acorta más con la sentencia SQL). ¿ No es mejor algo más universal ?. En el caso de usar Result en Gambas, lo más probable es que esto lo haga independiente del gestor de base de datos. Puede ser el motivo de su uso. Saludos RE: Usar sentencia SQL o método de la clase Result - Shordi - 30-12-2022 Cita:En el caso de usar Result en Gambas, lo más probable es que esto lo haga independiente del gestor de base de datos. Puede ser el motivo de su uso.Exacto. Ese es el único motivo. Usar sentencias SQL directamente es, incluso, más rápido pero atas el programa a ese tipo de base de datos y su modificación, bien porque ampliamos a una BDD más potente o porque haya actualizaciones en el dialecto SQL de la versión de la BDD, serían causa de muchos problemas en todos los programas que la usen. Utilizando las clases de gambas sólo requerirían cambiar la propiedad de la clase connection en el primer caso y la actualización del módulo de gambas en el segundo. Después de eso, recompilar y listo. Saludos. RE: Usar sentencia SQL o método de la clase Result - Shell - 05-01-2023 Aunque no lo he estudiado bien, ayer intenté hacer una consulta con la clase Result y el método find pero no obtuve lo que quería, si lo logré con el método exec. Pero entonces no valdría para otro motor. De la ayuda de Gambas sobre gb.db dice: Cita: Aunque luego diga al final que lo hagamos como queramos si no necesitamos independencia del tipo de base de datos. Estoy intentando de seguir la filosofía de la ayuda, aunque por ahora solo uso sqlite3. El ejemplo. Tengo cuatro registros que se rellenan con datos de empleados. Hay dos hombres y dos mujeres. Entonces quiero contar cuantos pertenecen a mujeres. Lo hago así: [code] Pero luego a la hora de hacerlo con el método find de la clase result, no acabo de lograrlo,por falta de uso de este método. ¿ Cómo lo llevo a hacerlo con la clase result y el método find ?. Estuve leyendo el antiguo foro de Gambas y las explicaciones de Soplo. La clase conection ¿ En realidad vosotros seguís esa filosofía (usar solo la clase Result) ?. O usáis el método exec por que no tenéis más remedio. ( En casa del herrero.. ) Con esto quiero decir, ¿ Puedo usando solo la clase result y sus métodos parar lograr la mayoría de las consultas SQL ?. Saludos RE: Usar sentencia SQL o método de la clase Result - Shordi - 06-01-2023 Cita:¿ En realidad vosotros seguís esa filosofía (usar solo la clase Result) ?. O usáis el método exec por que no tenéis más remedio. ( En casa del herrero.. )Primero una puntualización: Los métodos exec, find, create y delete no son de la clase result, son de la clase Connection. Una instancia de la clase result es lo que devuelven esos métodos (menos delete por razones obvias). Lo que aquí se dirime es la manera de hacer llegar nuestra consulta al motor de la base de datos. El asunto de si nuestro programa va a ser escalado o no a otro tipo de base de datos, creo que queda para aplicaciones comerciales de amplia distribución. Es decir, si no usas el método exec, puedes distribuir tu programa entre clientes que dispongan de sqlite o Oracle o MariaDB o MySql indistintamente. En tal caso debes proveer a tu programa un mecanismo de configuración de los parámetros de la clase Connection y ya tienes un programa de amplia distribución. Si tus programas no aspiran a eso o, como me ocurría a mí en mi vida laboral, las bases de datos también están a tu cargo, puedes olvidarte de eso y utilizar sólo la clase exec, que para eso está. Sin embargo la clase exec puede ser muy pejiguera en ciertas cuestiones, como las comillas, para soslayar eso debes usar los parámetros reemplazables, que te libra de todo ese pantanoso asunto. Con ello, tu sentencia quedaría asi: Código: [code] Saludos RE: Usar sentencia SQL o método de la clase Result - Shell - 07-01-2023 (06-01-2023, 11:09)Shordi escribió: Primero una puntualización: Los métodos exec, find, create y delete no son de la clase result, son de la clase Connection. Una instancia de la clase result es lo que devuelven esos métodos (menos delete por razones obvias). Cierto. De ahí comentaba el post de Soplo sobre la clase Connection. (06-01-2023, 11:09)Shordi escribió: Si tus programas no aspiran a eso o, como me ocurría a mí en mi vida laboral, las bases de datos también están a tu cargo, puedes olvidarte de eso y utilizar sólo la clase exec, que para eso está Supongo que te viste en la necesidad de cambiar o usar distintos gestores de bases de datos. ( Según necesidad, claro ). Eso probablemente afectaría al método exec que habías diseñado. El tema de usar parámetros reemplazables es algo que tendré que ir viendo según voy aprendiendo a usar sqlite con Gambas. |