FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Pasar a SQL paso a paso para Novatos..
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Tue Jul 29, 2014 09:13 PM
Respuestas:
1.
Code (fw): Select all Collapse
#include "tdolphin.ch"
#include "fivewin.ch"
FUNCTION Connect( )
   LOCAL oServer   
   LOCAL oErr
   TRY
      CONNECT oServer HOST "localhost" ; // o IP del servidor donde tienes la base de datos
                      USER "root" ;
                      PASSWORD "1234";
                      PORT 3306 ;
                      FLAGS 0;
                      DATABASE "MiDataBase"
                                
   CATCH oErr 
     RETURN NIL
   END
RETURN oServer

2. La base de datos la tenes que tener creada de antemano (MiDataBase en el ejemplo). Lo podes hacer desde algun gestor de bases de datos (Yo utilizo el SQLYog). Ahi podras crear la base de datos y las tablas, las relaciones, claves, indices, etc.... Con un DBU pero mas potente. Y podrias administrar n bases de datos. (Acordate que una base de datos, es mucho mas que un conjunto de tablas o dbfs como antes, hay vistas, funciones almacenadas, procedimientos, etc) Pero con crear una base de datos y un par de tablas es suficiente para probar.
3. Lo que abris es una consulta, no una tabla. Y lo dejas en un objeto Query. Vos vas a trabajar sobre el objeto Query. Lo similar a un USE miTabla de DBF seria un SELECT * FROM miTabla, y con TDolphin seria oQry := oServer:Query("SELECT * FROM miTabla"), lo que te crea un objeto Query en oQry, y vas a manipular esa consulta. Visualizar esa consulta seria XBrowse( oQry, "Probando xbrowse con dolphin",.t.) y la verias en el browse estandar de fivewin
4. Cerrar la consulta en TDolphin, es simplemente oQry:End().
Igualmente, ojo, hay mucho mas, el poder de SQL es mucho mas que solo esto. Esto son los primeros pasos.
Espero que sigas avanzando!
Saludos
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Tue Jul 29, 2014 11:21 PM
REQUEST #2

Code (fw): Select all Collapse
#include "fivewin.ch"
#include <tdolphin.ch>

static oCon //contenedor

Function Main()
   LOCAL cBase := "mibase_de_pruebas"
   

    D_SetCaseSensitive( .t. )

   * ----------------------------------- *
   * conectamos con el servidor          *
   * ----------------------------------- *
   IF ( oCon := Connection() ) == NIL
      msgstop('No se pudo realizar una conexion con el servidor', ::cUser )
      RETURN NIL
   ENDIF   
   *** evita un poco suspension del mysql,
   oCon:Execute( "SET SESSION wait_timeout = 86400;" ) 


   * ----------------------------------- *
   * creamos el contenedor               *
   * la base que contiene las tablas     *
   * ----------------------------------- *      
   
   if ! CreaDb( oServer, cDbName )
      msgstop('No se pudo crear o conectar con la base de datos principal ... ', ::cUser )
      RETURN nil
   endif      



   **********************************************
   * creo mi primera tabla                      *
   **********************************************
   CreaLineas( oCon )

   


 RETURN NIL

 FUNCTION Connect( )
   LOCAL oServer  
   LOCAL oErr
   TRY
      CONNECT oServer HOST "localhost" ; // o IP del servidor donde tienes la base de datos
                      USER "root" ;
                      PASSWORD "1234";
                      PORT 3306 ;
                      FLAGS 0

                      // DATABASE "MiDataBase"
                               
   CATCH oErr
     RETURN NIL
   END
  

RETURN oServer


Function CreaLineas( oCon )
    local cQry
    * crea la tabla lineas.sql si no existe
   cQry := "CREATE TABLE IF NOT EXISTS lineas ( "
   cQry += "id INT UNSIGNED NOT NULL AUTO_INCREMENT,"
   cQry += "codigo      decimal(6,0) default 0, "
   cQry += "nombre      varchar(40) default '', "

   cQry += "PRIMARY KEY (id) , INDEX (codigo), INDEX (nombre) ) "
   
   cQry += "ENGINE = InnoDB"

   oCon:Execute( cQry ) 

Return nil
Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Wed Jul 30, 2014 04:36 AM
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Wed Jul 30, 2014 01:57 PM
Saludos y gracias a todos por su amable ayuda..

Con la colaboraci贸n de todod ustedes ya estamos aprendiendo a usar SQL con Fivewin ya tengo peque帽as pruebas..



Tengo una duda que talvez sea tonta pero al fin y al cabo duda..

Es posible crear una base de datos si no existe desde codigo, en las pruebas que tengo puedo agregar mas tablas a una base de datos que ya la hize previamente desde Workbench, pero me gustaria saber si es posible y de ser asi asignarle una ruta para poderla crear donde la necesite..

Saludos..
Soluciones y Dise帽o de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Dise帽ador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Wed Jul 30, 2014 02:21 PM
Si, es posible! Tanto desde SQL puro como desde la librer铆a de daniel!
Code (fw): Select all Collapse
oServer:Execute("CREATE IF NOT EXISTS prueba")

o
Code (fw): Select all Collapse
oServer:DBCreate( "prueba",.t., cCharSet, cCollate )

No entindo muy bien a que te referis con pasarle la ruta. Lo que haces es crearla en el motor de la base de datos donde te conectaste.
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Wed Jul 30, 2014 09:17 PM

en el ejemplo 2 que te puse, crea la base y una tabla,
saludos..

Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Wed Jul 30, 2014 10:47 PM
Gracias de nuevo a todos, hay la llevamos paso a paso:

Ya puedo controlar la conexi贸n a MySQL, crear una base de datos, las tablas y poder hacer un browse a la tabla..



Me doy cuenta que las tablas se estan creando en la ubicaci贸n donde esta instalado el gestor:

Es posible que los archivos que se generen sean creados en la ruta de mi aplicaci贸n indicando a los Querys donde se ha de crear, o por defecto siempre trabajar谩 donde se intala MySQL, me nace esta duda porque cuando instale my Aplicaci贸n y se ejecuta por primera vez pide a el usuario final que decide donde guardar sus datos..

Como hacer para que todos los archivos creados queden dentro de la base de datos para que funcione como un contenedor de Tablas..

Saludos..
Soluciones y Dise帽o de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Dise帽ador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Thu Jul 31, 2014 02:49 PM

cuando se instala mysql este pide la ubicaci贸n del ejecutable, as铆 como de las bases de datos, por defecto esta definida en el root de la propia instalaci贸n de mysql, y como siempre le damos next, next, pues poco nos fijamos.
ahora en cliente servidor no tiene sentido definir cosas como tener los datos en un sub-dir de nuestra app u otra carpeta en el cliente, (donde queda la seguridad que es el objetivo de los entornos cliente/servidor?, es mas por ello la comunicacion entre cliente y server es por sockets de esta forma no exponemos los datos en una carpeta que pueda ser borrada acidentalmente o no), otra cosa es desarrollar con mysql embebido, para lo cual me parece que al definir la conexi贸n se debe establecer donde est谩n los datos, incluso creo recordar que es un directorio especifico donde se ubican ciertas dlls, archivos de localizaci贸n de idiomas y las bases de datos.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Thu Jul 31, 2014 06:29 PM
carlos vargas wrote:cuando se instala mysql este pide la ubicaci贸n del ejecutable, as铆 como de las bases de datos, por defecto esta definida en el root de la propia instalaci贸n de mysql, y como siempre le damos next, next, pues poco nos fijamos.
ahora en cliente servidor no tiene sentido definir cosas como tener los datos en un sub-dir de nuestra app u otra carpeta en el cliente, (donde queda la seguridad que es el objetivo de los entornos cliente/servidor?, es mas por ello la comunicacion entre cliente y server es por sockets de esta forma no exponemos los datos en una carpeta que pueda ser borrada acidentalmente o no), otra cosa es desarrollar con mysql embebido, para lo cual me parece que al definir la conexi贸n se debe establecer donde est谩n los datos, incluso creo recordar que es un directorio especifico donde se ubican ciertas dlls, archivos de localizaci贸n de idiomas y las bases de datos.



Hola a todos, y disculpen mi ignorancia...!

Cual es la diferencia en que ustedes instalen version MySQL a la SQL Server management express version 5 o version 2008.

Estas con las tablas...de SQL Server 2005 o 2008 .
ct01_Administracion_y_Asesoria_del_Su.mdf
ct01_Administracion_y_Asesoria_del_Su_log.LDF


Aqui porque la diferencia de la extension de la tabla.!

Y de la pregunta de como cambiar o enrutar el directorio de las bases de datos: Yo uso SQL Management Express y desde ahi adjuntar desde directorio que ustedes quieran cambiar la ruta , es lo unico que se manejar de SQL .

Siempre leo MySQL, y no de SQL, que es puro...

Saludos y buen dia .!
Atte: Adrian C. C.
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Thu Jul 31, 2014 10:39 PM

Tengo entendido que MySQL lo compr贸 ORACLE
En su reemplazo est谩 MariaDB.

Se puede usar MariaDB con TDolphin?

Saludos,

Adhemar

Saludos,



Adhemar C.
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Fri Aug 01, 2014 12:58 AM

Gracias Carlitos por tu explicaci贸n, antes de instalar MySQL revise muchos videos para entender el proceso, por lo pronto mi pregunta qued贸 respondida..

A煤n tengo dudas si es posible tener dentro de un solo archivo de base de datos todas mis tablas y dem谩s archivos.. Como andan lo hacen los archivos . mdb de Acces.

Saludos..

Soluciones y Dise帽o de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Dise帽ador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Fri Aug 01, 2014 03:30 AM

mysql usa diferente engine de datos, los mas conocidos son:

innodb
myisam

de estos:
myisam es la usada por la mayor铆a de app web, dado que es muy veloz para hacer consultas, que es lo que mas se hacen en las web.
cuando es de este tipo, la base de datos es un solo archivo, el cual tengo entendido puede ser copiada en el dir de bases de datos para ser respaldado/restauradas.
(se puede pero no se debe)

innodb, es la usada cuando se desarrollan aplicaciones que requieren transacciones (las operaciones est谩n aseguradas), es muy r谩pida para la modificaci贸n de datos.
cuando es de este tipo, la base de datos son tres archivos, como podemos ver en un post anterior (.frm, .MYD, .MYI), en este caso no sirve copiar los archivos para hacer respaldo, para hacer respaldo y restauraci贸n se usan
herramientas tales como mysqldump las cuales pasan los datos a texto puro y duro, y luego se encargan de importar el texto puro y duro a mysql.

por ello te digo, olv铆date que har谩s una app, y que tendr谩s un archivo de datos tipo mdb que la acompa帽ara.
a lo sumo lo que tendr谩s es un instalador de tu app, y el proceso de cargar el servidor con unos datos iniciales es que en el servidor se creara la base de datos y tendras un archivo .sql (script de texto puro) el cual debera ser importado, o usando
los m茅todos de que tiene tdolphin para leer esos archivos de respaldo.

en muchos entornos empresariales incluso no te dejan tocar del todo el servidor, lo que haces es pedir que el administrador cree la base de datos y que que te de un usuario y clave de acceso,
ya luego tu en la pc clientes instalas tu app, modificas los par谩metros de conexi贸n y tu app se encarga de establecer la conexi贸n, crear las tablas, view y poner los datos en ellas, o ejecutas un script que se encarge de crear las tablas, views, y los datos)

pero de cualquier forma, repito la idea de los entornos clientes/servidor es que:
el servidor esta a la escucha de conexiones por un puerto (la comunicaci贸n es por sockets), el cliente se conecta y empieza a pedir/servir informaci贸n. (el cliente no sabe donde esta almacenada la info, no tiene idea.(ac谩 los conceptos de carpetas, ficheros, indices no tienen por que importarle)

ac谩 lo que se tiene que hacer en el firewall del servidor es abrir el puerto que usa la base de datos, por ejemplo mysql usa 3306, mssql usa el 1433, postgreesql 5433, firebirdsql el 3050.
esto es para que pueda fluir la informaci贸n sin problemas.

ahora si deseas conexi贸n por Internet, deber谩s abrir esos mismo puertos en el firewall del router, ademas de hacer el direccionamiento de puertos (port_forwarding) para derivar todas las comunicacion de un puerto hacia el servidor.
incluso en algunos router existe lo de publicar un servicio. (para esto hay que saber un poco de direcciones ip, protocolos, etc).

es por ello que para un programador que solo se dedica a ello se le complica un poco establecer un entorno de desarrollo para este tipo de app C/S (maxime si solo es programador y no ha hecho sus pinitos en redes)
(me acuerdo que una implementan de ads server 7 en un server 2003 en una red local fue toda una batalla, la hice unas tres veces y siempre comet铆a mis buenos errores).
otra cosa, algo a tomar en cuenta es que cuando se usa mysql embebido la comunicaci贸n no es por sockets.

esto es lo que recuerdo de mis lecturas.

salu2

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Fri Aug 01, 2014 03:36 PM
cuatecatl82 wrote:Saludos y gracias a todos por su amable ayuda..

Con la colaboraci贸n de todod ustedes ya estamos aprendiendo a usar SQL con Fivewin ya tengo peque帽as pruebas..



Tengo una duda que talvez sea tonta pero al fin y al cabo duda..

Es posible crear una base de datos si no existe desde codigo, en las pruebas que tengo puedo agregar mas tablas a una base de datos que ya la hize previamente desde Workbench, pero me gustaria saber si es posible y de ser asi asignarle una ruta para poderla crear donde la necesite..

Saludos..


Ejemplos:
Code (fw): Select all Collapse
   TRY // TABLA CLASIFICACION DE CLIENTES (recargas_clasi_cli)
      cQryTablas := "CREATE TABLE IF NOT EXISTS  recargas_clasi_cli (" +;
         "clasi_cli_id VARCHAR(5) NOT NULL COMMENT 'Campo clave.'," +;
         "clasi_cli_nombre VARCHAR(50) DEFAULT NULL COMMENT 'Nombre clasificacion cliente.'," +;
            "usuario CHAR(2) DEFAULT NULL COMMENT 'Usuario del sistema.'," +;
            "fchcrea DATE NULL COMMENT 'Fecha creacion/modificacion registro.'," +;
            "hora TIME NULL COMMENT 'Hora creacion/modificacion registro.'," +;
         "PRIMARY KEY (clasi_cli_id) )" +;
         "ENGINE = InnoDB COMMENT 'Maestro Clasificacion Clientes.';"
      oDatos:oConex:Execute( cQryTablas )

   CATCH oError
      msgstop(oError)
      RETURN

   END


Algunas operaciones con Tablas...

Code (fw): Select all Collapse
// OPCIONES DE USO EN TABLAS CON MYSQL
//
**   TRY // TABLA pruebas
**      cQryTablas := "DROP TABLE IF EXISTS " + aTablas[1] // ELIMINAR TABLA
**      oDatos:oConex:Execute( cQryTablas )

/*
      cQryTablas := "CREATE TABLE IF NOT EXISTS " + aTablas[1] + " (" +; // CREAR TABLA
         "clave VARCHAR(5) NOT NULL COMMENT 'Clave'," +;
         "nombre VARCHAR(30) DEFAULT NULL NULL COMMENT 'Nombre'," +;
         "nivel INT(1) DEFAULT 0 COMMENT 'Nombre'," +;
         "precio DECIMAL(7,2) DEFAULT 0.00 COMMENT 'Precio autorizado'," +;
         "PRIMARY KEY (clave) )" +;
         "ENGINE = InnoDB COMMENT 'Maestro de Usuarios';"
      oDatos:Execute( cQryTablas )
*/

**      cQryTablas := "ALTER TABLE " + aTablas[1] + " ADD COLUMN `campo_nuevo` int(5) " +; // AGREGAR CAMPO
**         "DEFAULT 1 NULL AFTER `nivel`"
**      oDatos:oConex:Execute( cQryTablas )

**      cQryTablas := "ALTER TABLE " + aTablas[1] + " MODIFY COLUMN `precio` decimal(7,2) " +; // MODIFICAR(ALTER) ATRIBUTOS DEL CAMPO
**         "NULL DEFAULT 0.00 COMMENT 'Precio'"
**      oDatos:oConex:Execute( cQryTablas )

**      cQryTablas := "ALTER TABLE " + aTablas[1] + " MODIFY COLUMN `preciototal` decimal(7,2) " +; // MODIFICAR CAMPO
**         "NULL DEFAULT 3 COMMENT 'Precio'"
**      oDatos:oConex:Execute( cQryTablas )

**      cQryTablas := "ALTER TABLE " + aTablas[1] + " CHANGE COLUMN `preciototal` `precio` decimal(10,2) " +; // RENOMBRA CAMPO, DEBE ESPECIFICAR EL TIPO
**         "NULL DEFAULT 0.00 COMMENT 'Precio'"
**      oDatos:oConex:Execute( cQryTablas )

**      cQryTablas := "ALTER TABLE " + aTablas[1] + " DROP COLUMN `precio`" // ELIMINAR CAMPO
**      oDatos:oConex:Execute( cQryTablas )

** ? "Tabla prueba lista..."

/*
   CATCH oError
      ShowError( oError, "crear_tablas", "crear_tablas.prg" )
      RETURN

   END
*/
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Sun Aug 03, 2014 02:21 AM

Gracias por sus ejemplos, sin querer estoy tambi茅n aprendiendo a trabajando de forma paralela con ADO.

Me gusta ADO porque creo una Bd en formato Mdb que es lo que necesito, un archivo f铆sico que contiene en su interior varias tablas, usando querys.

Con Sql creo que no es posible porque InnoDb y MyIsam crean solo una carpeta como base de datos y varios archivos como tablas..

Como puedo crear una base de datos protegida con contrase帽a desde Sql y desde ADO..

Saludos

Soluciones y Dise帽o de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Dise帽ador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 105
Joined: Sat Jan 14, 2012 03:46 PM
Re: Pasar a SQL paso a paso para Novatos..
Posted: Sun Aug 03, 2014 03:01 PM
Un gestor menos pesado que mysql workbench pero muy efectivo (aunque su autor no sea muy guapo :-)
Para MySQL, PostgreSQL, Microsoft SQL, MariaDB...

http://www.heidisql.com/

Saludos
Fivewinner desde 1.9, programador PHP y Javascript, PWA & HTML5 evangelista