Crear base de datos MySQL

826 views
Skip to first unread message

Juanpa

unread,
Jun 8, 2011, 4:42:31 AM6/8/11
to Comunidad de Visual Foxpro en Español
Hola,

¿Se puede crear una base de datos MySQL desde cero mediante comandos
en VFP?

Me refiero a hacer el CREATE DATABASE.

Se como conectarme e interactuar sobra una ya creada, pero no crearla
desde el principio.

Muchas gracias.

VFP9-SP2

Un saludo,
Juan Pablo Martín Peinado
Guadalajara - España

ricardo peña

unread,
Jun 8, 2011, 6:44:23 AM6/8/11
to GRUPO-VFP GRUPO-VFP
Juan Pablo:
 
Me parece que si generas la instrucción en un string y la ejecutas
 
con sqlexec, debería andar.

Ricardo Luis Peña
Analista de Sistemas
BA - Argentina



 
> Date: Wed, 8 Jun 2011 01:42:31 -0700
> Subject: [vfp] Crear base de datos MySQL
> From: juanp...@gmail.com
> To: publice...@googlegroups.com

Mauricio Molinero,

unread,
Jun 8, 2011, 8:13:02 AM6/8/11
to Comunidad de Visual Foxpro en Español
Hola Juan Pablo,

Si como te indica Ricardo puedes ejecutar todos los comandos con
SQLEXEC().

SQLEXEC(Handle,'CREATE TABLE')
SQLEXEC(Handle,'ALTER TABLE')
SQLEXEC(Handle,'LOAD DATA INFILE')
SQLEXEC(Handle,'SHOW FULL COLUMNS FROM')
SQLEXEC(Handle,'SHOW TABLE','cTables'), etc.

Saludos!

Mauricio R. Molinero,

Juanpa

unread,
Jun 8, 2011, 12:37:05 PM6/8/11
to Comunidad de Visual Foxpro en Español
Gracias por responder Mauricio y Ricardo.

No me refiero a crear/modificar tablas en una base de datos ya
existente, sino crear una nueva base de datos que NO existe.

Con SQLEXEC necesito el Handle que me ha dado previamente SQLCONNECT.
Hasta ahí no hay problema. Pero si la base de datos todavía NO existe,
no me puedo conectar a ella. Lo que quiero es crearla desde cero.

VFP9-SP2

Un saludo,
Juan Pablo Martín Peinado
Guadalajara - España

ricardo peña

unread,
Jun 8, 2011, 1:18:47 PM6/8/11
to GRUPO-VFP GRUPO-VFP
¿ No funciona la instrucción
 
=sqlexec(handle,"CREATE DATABASE Mydb ON f:\MyDir COLLATE Modern_Spanish_CI_AS PRIMARY SIZE = 10, MAXSIZE = UNLIMITED, FILEGROWTH = 5")
 
pregunto yo ?

 
Ricardo Luis Peña
Analista de Sistemas
BA - Argentina



 
> Date: Wed, 8 Jun 2011 09:37:05 -0700
> Subject: [vfp] Re: Crear base de datos MySQL
> From: juanp...@gmail.com
> To: publice...@googlegroups.com
>

Richard Gaviria

unread,
Jun 8, 2011, 1:44:41 PM6/8/11
to Grupo VFP
Hola a todos, quiero dar un pequeño aporte a esto, cuando ya se  trabajan con servidores (ORACLE, SQL, MYSQL, FIREBIRD), es preferible diseñar y crear la base de datos en una capa separada a tu sistema, ya que el diseño de una base de datos en la que podrías considerar Stored Procedures, Triggers, Vista, etc. deberían ser creadas y manejadas desde la capa Base de datos con su propio administrador.

Saludos.

Rick.

Jairo Miranda

unread,
Jun 8, 2011, 1:55:20 PM6/8/11
to publice...@googlegroups.com
Ten envio un programa que encontré en la red.
De Alexander Eltsyn , convierte y crea base de datos de fox a sql

Espero le sirva a todos
No olvinde cambiar la extencion
JM


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Juanpa
Enviado el: Miércoles, 08 de Junio de 2011 03:43
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Crear base de datos MySQL

dbf2mysql.rar.TXT

Walter R. Ojeda Valiente

unread,
Jun 8, 2011, 2:50:34 PM6/8/11
to publice...@googlegroups.com
Estoy totalmente de acuerdo con Richard.

Las instrucciones DDL (Data Definition Language) o sea: CREATE, ALTER, RECREATE, DROP deben ser usadas desde afuera del Visual FoxPro, en el propio administrador de la Base de Datos.

Y si vamos a programar bien, también las instrucciones DML (Data Manipulation Language) que modifican datos: INSERT, UPDATE, DELETE, deberían estar en Stored Procedures o Triggers y nunca llamadas directamente desde Visual FoxPro.

En síntesis, solamente se deberían usar SELECT y EXECUTE PROCEDURE (o su equivalente) en el código fuente de una aplicación.

Saludos.

Walter.




From: rgav...@msn.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: Crear base de datos MySQL
Date: Wed, 8 Jun 2011 17:44:41 +0000

GeoSys Diseño de Software

unread,
Jun 8, 2011, 2:58:39 PM6/8/11
to publice...@googlegroups.com
Walter tu que tienes experiencia con FireBird y ya que tocan este tema:

Se puede remotamente crear una base de datos con TeamViewer o tiene que estar la persona físicamente sentado en el servidor.

Esto porque mi software que distribuyo es comercial y casi nunca me traslado donde el cliente.

Saludos

Anthony Contreras Peralta

Costa Rica.


Hector R. De los Santos

unread,
Jun 8, 2011, 3:00:25 PM6/8/11
to publice...@googlegroups.com
Donde estan esas normas de programacion?
No le veo ningun problema el usar esos comando desde VFP, todo va a depender de las necesidades.
Tampoco creo que sea obligatorio usar los INSERT, UPDATE y DELETE desde un SP, de ahi viene la sobre-ultilizacion de las funcionalidades de un motor.

Por ejemplo, con PostgreSQL puedo enviar comandos DML y DDL desde un mismo Query y todos son ejecutados y lo he hecho por razones justas.




:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363

sergio garcia

unread,
Jun 8, 2011, 3:26:23 PM6/8/11
to publice...@googlegroups.com

Disculpa que me meta pero si puedes crear la bd desde TeamViewer siempre y cuando tengas para mayor facilidad un manejador de bd por ejemplo sqlyog.

 

 

______________________________________

Sergio A. García
Gerencia
in...@magicsoft.com.gt

Magicsoft de Guatemala
30 Avenida A 17-80 Zona 7 Villa Linda I, Guatemala / 9 calle 7-65 Zona 1, Jutiapa
Tlf: 5527-4094 · Fax: 7844-3805
in...@magicsoft.com.gt · www.magicsoft.com.gt  skype    

magicblancopecoNo me imprimas si no es necesario. Protejamos el medio ambiente

image001.png
image002.png
image003.gif

Adolfo Leon Quintero Hoyos

unread,
Jun 8, 2011, 3:40:53 PM6/8/11
to publice...@googlegroups.com
Mira a ver si esto te ayuda

Saludos


Adolfo
Tulua-Valle-Colombia
masprocesosmysql.doc
vfp_mysql_blobs.zip
vfp_mysql_conexiones.zip

Richard Gaviria

unread,
Jun 8, 2011, 4:25:12 PM6/8/11
to Grupo VFP
Estimado Héctor, no hay que perder la brújula, aquí el tema no es que "no se pueda", sino que "no se deba", que son cosas muy distintas. Cuando realizas sistemas "grandes" o "formales" por lo general el cliente te pide un desarrollo en "n capas", con el objetivo que al plantearse un mantenimiento del sistema sea sobre una determinada capa. 
Es totalmente válido usar INSERT, UPDATE Y DELETE desde tu lenguaje de programación. Una recomendación en el caso de DELETE por auditoría no es recomendable borrar un registro es preferible hacerlo como se hace en dbf, un borrado lógico que se puede hacer poniendo un flag en una tabla.
Y por otro lado es mucho más fácil diseñar tu base de datos desde un entorno gráfico que esté ligado con tu motor de base de datos para sincronizar los cambios.

Saludos.

Rick.
http://www.engineersoftasociados.com


Date: Wed, 8 Jun 2011 15:00:25 -0400
Subject: Re: [vfp] Re: Crear base de datos MySQL
From: zah...@gmail.com
To: publice...@googlegroups.com

Walter R. Ojeda Valiente

unread,
Jun 8, 2011, 4:50:12 PM6/8/11
to publice...@googlegroups.com
Hola Anthony

Sí, claro que se puede. Si tienes acceso a la computadora donde está el Servidor entonces puedes hacerlo, sin ningún problema. Pero tu Base de Datos debe estar en esa misma computadora. El Firebird no permite que el Servidor y la Base de Datos estén en distintas computadoras.

Saludos.

Walter.




Date: Wed, 8 Jun 2011 12:58:39 -0600
Subject: Re: [vfp] Re: Crear base de datos MySQL
From: geos...@gmail.com
To: publice...@googlegroups.com

GeoSys Diseño de Software

unread,
Jun 8, 2011, 5:10:43 PM6/8/11
to publice...@googlegroups.com
Gracias Walter.

Saludos



Anthony Contreras Peralta.

Costa Rica

Walter R. Ojeda Valiente

unread,
Jun 8, 2011, 5:13:48 PM6/8/11
to publice...@googlegroups.com
Héctor, una cosa es lo que PUEDES hacer y otra cosa es lo que DEBES hacer para trabajar correctamente.

Y la forma más correcta es trabajar usando varias capas, cada una de ellas dedicada exclusivamente a una tarea. Eso implica que no deberías mezclar las tareas. Todo lo que tiene que ver con una Base de Datos es responsabilidad del motor de esa Base de Datos. Claro que sí puedes mezclar las tareas si quieres, y esa es la forma tradicional de hacerlo, pero no es la más adecuada. Todo funciona mejor si se trabaja organizadamente.

Saludos.

Walter.





Date: Wed, 8 Jun 2011 15:00:25 -0400
Subject: Re: [vfp] Re: Crear base de datos MySQL
From: zah...@gmail.com
To: publice...@googlegroups.com

Walter R. Ojeda Valiente

unread,
Jun 8, 2011, 5:20:45 PM6/8/11
to publice...@googlegroups.com
Vaya, le escribí una respuesta parecida a la tuya. De haber sabido que ibas a escribir algo tan similar, quizás no lo hubiera hecho.

:-)


Saludos.

Walter.




From: rgav...@msn.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: Crear base de datos MySQL
Date: Wed, 8 Jun 2011 20:25:12 +0000

Richard Gaviria

unread,
Jun 8, 2011, 5:21:56 PM6/8/11
to Grupo VFP
Me sorprendió que escribierámos casi lo mismo, eso quiere decir que no estamos tan equivocados... jajaja.

Saludos.

Rick.

To: publice...@googlegroups.com
Subject: RE: [vfp] Re: Crear base de datos MySQL
Date: Wed, 8 Jun 2011 21:20:45 +0000

Walter R. Ojeda Valiente

unread,
Jun 8, 2011, 5:24:02 PM6/8/11
to publice...@googlegroups.com
O que nos equivocamos en las mismas cosas, también puede ser eso.

Ja, ja, ja, ja, ja, ja.


Saludos.

Walter.




From: rgav...@msn.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: Crear base de datos MySQL
Date: Wed, 8 Jun 2011 21:21:56 +0000

Richard Gaviria

unread,
Jun 8, 2011, 5:27:45 PM6/8/11
to Grupo VFP
Hay que pensar que no estamos tan equivocados es un mejor enfoque de las cosas.

Saludos.

Rick.


From: wr...@hotmail.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: Crear base de datos MySQL
Date: Wed, 8 Jun 2011 21:24:02 +0000

Walter R. Ojeda Valiente

unread,
Jun 8, 2011, 5:39:51 PM6/8/11
to publice...@googlegroups.com
Hola Richard

Por supuesto, además lo que decimos es lo que se recomienda desde hace ya varios años.

Por ejemplo, en: http://www.elguille.info/colabora/puntoNET/jevergara_Multitier.htm

podemos leer: "La programación en múltiples capas es la técnica más efectiva en aplicaciones empresariales, debido a la fácil administración que implica el dividir los componentes de la aplicación en capas y la rapidez que esto implica en programas orientados a Cliente-Servidor."

Y en: http://html.rincondelvago.com/desarrollo-de-n-capas.html

podemos leer: "
El modelo n-tier (n-capas) de informática distribuida ha emergido como la arquitectura predominante para la construcción de aplicaciones multiplataforma en la mayor parte de las empresas pertenecientes a Fortune 1000"

Aclaro para quienes no lo saben: Fortune 1000 se refiere a las 1000 empresas más grandes de los Estados Unidos.

Y si la mayoría de las 1000 empresas más grandes de ese país prefieren trabajar en múltiples capas, por algo será ¿no les parece?

Estamos hablando de empresas que para los estándares latinoamericanos son gigantescas.

Saludos.

Walter.




From: rgav...@msn.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: Crear base de datos MySQL
Date: Wed, 8 Jun 2011 21:27:45 +0000

Carlos Miguel FARIAS

unread,
Jun 9, 2011, 5:00:48 PM6/9/11
to publice...@googlegroups.com
Ya Napoleon aconsejaba trabajar separando las cosas "divides y venceras...".
Fijate que D'Artagnan trabajaba con tres capas (las de sus mosqueteros), viste, nada es realmente innovador.

Alvaro

unread,
Nov 27, 2012, 8:53:05 AM11/27/12
to publice...@googlegroups.com
Primero: buscando en la Red encontré que es posible crear una base de Datos desde VFP en un servidor mySQL, ahora con respecto a la programación n-capas o si es recomendable o no generar estas desde los programas VFP, me asalta la duda que pasa en sistemas en que se trabaja con multiples entidades y se quieren manejar los datos por separado, caso practico, un sistema contable en el cual cada empresa lleva sus datos por separados. 

por si a alguien le interesa copio el codigo encontrado en la Red

clear

close all

*- Nos conectamos

Nhandle = SQLCONNECT('sample-mysql','root','')

 

*- el valor debe ser superior a 0

? nHandle

 

*- Si ya existe la Base de datos la borramos

? sqlexec(nHandle,'DROP DATABASE IF EXISTS miBDatos')

 

*- Creamos la Base de datos y nos posicionamos en ella para crear una tabla

? sqlexec(nHandle,'CREATE DATABASE miBDatos')

? sqlexec(nHandle,'USE miBDatos')

? sqlexec(nHandle,'CREATE TABLE agenda (nombre CHAR(50), direccion CHAR(50),;

     telefono CHAR(15), email CHAR(30))' )

 

*- Insertamos un registro

? sqlexec(nHandle,"INSERT INTO agenda VALUES ('Juan Pérez', 'C/ Laguna 15. Sevilla',;

    '95.455.55.55', 'ju...@agenda.com')" )

 

*- Nos traemos todo

? sqlexec(nHandle,"Select * from agenda")

? sqldisconn(nHandle)


esperando que pueda servir

Hernandez Gabriel

unread,
Nov 27, 2012, 10:29:32 AM11/27/12
to publice...@googlegroups.com
Mi sistemas son multiempresa, lo que hago es colocar un campo IDEMPRESA, y filtro en cada parte del sistema con referencia a ese IDEMPRESA, bueno no se si es LA SOLCUION, pero es la que Yo encontré.

Saludos

Gabriel


--
 
 

Hector Colman

unread,
Jun 19, 2015, 1:03:23 PM6/19/15
to publice...@googlegroups.com, juanp...@gmail.com
Yo utilizo  el driver (ODBC) MySQL ODBC 3.51 Driver para crear
mira
-----------------------------------------------------------------------------------
*conexión
Public lcDSNLess As Character
lcDSNLess="DRIVER={MySQL ODBC 3.51 Driver};" ;
+ "SERVER=localhost;" ;
+ "UID=root;" ;
+ "PWD=123;" ;
+ "DATABASE=;"
SQLSetprop(0,"DispLogin",3)
v_conexion=Sqlstringconnect(lcDSNLess)


* para crear bata base
If v_conexion > 0
*SQLTables(v_conexion,"TABLES","curtablas")
*Select curtablas
*BROWSE
Xc= SQLExec(v_conexion,"CREATE DATABASE BDD_prueba")
If Xc < 0
=Aerror(elError)
Messagebox("No se pudo crear Data Base"+Chr(13)+;
"Descripcion:"+elError[2],0+16+256,"Error")
ELSE
Messagebox("Se creo con Exito la BD BDD_prueba")
Endif
Else
Messagebox("No se conectar")
Endif

-----------------------------------------------------------------------------------
*conexión
Public lcDSNLess As Character
lcDSNLess="DRIVER={MySQL ODBC 3.51 Driver};" ;
+ "SERVER=localhost;" ;
+ "UID=root;" ;
+ "PWD=123;" ;
+ "DATABASE=;"
SQLSetprop(0,"DispLogin",3)
v_conexion=Sqlstringconnect(lcDSNLess)

* Para borrar bata base
Xc= SQLExec(v_conexion,"DROP DATABASE BDD_prueba")
If Xc < 0
=Aerror(elError)
Messagebox("No se pudo Borrar la Base de Datos"+Chr(13)+;
"Descripcion:"+elError[2],0+16+256,"Error")
Else
Messagebox("Se borró con Exito la BD BDD_prueba",64,"Atención")
Endif



Antonio Meza

unread,
Jun 19, 2015, 1:48:11 PM6/19/15
to publice...@googlegroups.com, hcolma...@gmail.com, juanp...@gmail.com
Creo que no hay mejor chiste para los viernes que este !!!! jajajajaja

saludos
Antonio Meza

Rafael Morales

unread,
Jul 18, 2015, 5:57:13 PM7/18/15
to publice...@googlegroups.com
Hola a todos. El ejemplo de Hector Colman funciona perfecto pero cuando quiero agregarle una tabla a esa base de datos me da error, ¿alguien sabe cual es el error?, les paso el código que uso.

*conexión
Public lcDSNLess As Character
lcDSNLess="DRIVER={MySQL ODBC 3.51 Driver};" ;
+ "SERVER=localhost;" ;
+ "UID=root;" ;
+ "PWD=123;" ;
+ "DATABASE=;"
SQLSetprop(0,"DispLogin",3)
v_conexion=Sqlstringconnect(lcDSNLess)


* para crear bata base
If v_conexion > 0
       
        sql_insert = []

        TEXT TO sql_insert TEXTMERGE NOSHOW ADDITIVE

CREATE DATABASE BDD_prueba;
                USE BDD_prueba;

                CREATE TABLE TBL_temp (Nombre char(30));

       ENDTEXT  

       Xc= SQLExec(v_conexion,sql_insert)

If Xc < 0
=Aerror(elError)
Messagebox("No se pudo crear Data Base"+Chr(13)+;
"Descripcion:"+elError[2],0+16+256,"Error")
ELSE
Messagebox("Se creo con Exito la BD BDD_prueba")
Endif
Else
Messagebox("No se conectar")
Endif
--
Rafael Morales

Antonio Meza

unread,
Jul 18, 2015, 6:37:22 PM7/18/15
to publice...@googlegroups.com, rafam...@gmail.com
Hola, lo recomendable es abrir un hilo nuevo y hacer referencia a un hilo viejo!!

El problema que tienes es que SqlExec no permite enviar varias instrucciones SQL en un solo envió, tienes que enviar una por una, si usaras SqlServer si funciona pero con otro servidor de base de datos no.

Estas enviando 3 separadas por punto y coma, envía una por una.
CREATE DATABASE BDD_prueba;
USE BDD_prueba;
CREATE TABLE TBL_temp (Nombre char(30));

saludos
Antonio Meza

Rafael Morales

unread,
Jul 18, 2015, 7:02:19 PM7/18/15
to publice...@googlegroups.com
ok, Antonio, gracias por responder, probaré lo que me recomiendas. Saludos.
--
Rafael Morales

Rafael Morales

unread,
Jul 18, 2015, 7:56:03 PM7/18/15
to publice...@googlegroups.com
Gracias Antonio, ahora funciona perfectamente. Mandé las intrucciones en lineas separadas, estoy susando MariaBD. Ahi dejo un ejemplo de lo que modifique. saludos.

Xc = SQLExec(nu_conexion,"CREATE DATABASE BDD_prueba")
Xc = SQLExec(nu_conexion,"USE BDD_prueba")
Xc = SQLExec(nu_conexion," CREATE TABLE TBL_temp (Nombre char(30))")
--
Rafael Morales
Reply all
Reply to author
Forward
0 new messages