Pasar a SQL paso a paso para Novatos..

User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Pasar a SQL paso a paso para Novatos..

Post by cmsoft »

Respuestas:
1.

Code: Select all

#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
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: Pasar a SQL paso a paso para Novatos..

Post by sysctrl2 »

REQUEST #2

Code: Select all

#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 "
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Pasar a SQL paso a paso para Novatos..

Post by joseluisysturiz »

Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Pasar a SQL paso a paso para Novatos..

Post by cuatecatl82 »

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..

Image

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
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Pasar a SQL paso a paso para Novatos..

Post by cmsoft »

Si, es posible! Tanto desde SQL puro como desde la librería de daniel!

Code: Select all

oServer:Execute("CREATE IF NOT EXISTS prueba")
o

Code: Select all

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.
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: Pasar a SQL paso a paso para Novatos..

Post by sysctrl2 »

en el ejemplo 2 que te puse, crea la base y una tabla,
saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Pasar a SQL paso a paso para Novatos..

Post by cuatecatl82 »

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..

Image

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
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Pasar a SQL paso a paso para Novatos..

Post by carlos vargas »

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)
ACC69
Posts: 619
Joined: Tue Dec 12, 2006 7:34 pm
Contact:

Re: Pasar a SQL paso a paso para Novatos..

Post by ACC69 »

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.
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Pasar a SQL paso a paso para Novatos..

Post by acuellar »

Tengo entendido que MySQL lo compró ORACLE
En su reemplazo está MariaDB.

Se puede usar MariaDB con TDolphin?

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Pasar a SQL paso a paso para Novatos..

Post by cuatecatl82 »

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
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Pasar a SQL paso a paso para Novatos..

Post by carlos vargas »

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)
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Pasar a SQL paso a paso para Novatos..

Post by joseluisysturiz »

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..

Image

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: Select all

   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: Select all

// 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:oConex: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!
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Pasar a SQL paso a paso para Novatos..

Post by cuatecatl82 »

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
User avatar
Joaquim Ferrer
Posts: 58
Joined: Sat Jan 14, 2012 3:46 pm
Location: Barcelona

Re: Pasar a SQL paso a paso para Novatos..

Post by Joaquim Ferrer »

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, HTML5 evangelista
Post Reply