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