Anda di halaman 1dari 13

http://www.fpress.com/revista/Num0401/articulo.

htm

MySQL y VFP
http://www.fpress.com/ Por la Redaccin de FoxPress

MySQL es un gestor de Bases de Datos multi-thread, multiusuario que gestiona bases de datos relacionales poniendo las tablas en ficheros diferenciados (en vez de en un solo fichero) sometida a las licencias del Open Source Software. MySQL funciona sobre plataformas Windows/Linux/SCO/SUN/IBM AIX/HP-UX. En la sede de www.MySql.com estn disponibles esas versiones y los fuentes correspondientes. La ltima versin estable es la 3.23 MySQL es muy conocido en el mundo Linux y es una de las Bases de Datos ms usadas. Las crticas que recibe suelen venir de las carencias que el producto tiene entre las que se citan: 1.- Inexistencia de Transacciones 2.- Imposibilidad de hacer subconsultas (Subquerys) 3.- Inexistencia de Procedimientos almacenados 4.- Carencia de Tiggers en las Claves externas 5.- Sin soporte para integridad referencial. Esto hace que sea uno de los Gestores de Bases de Datos ms rpidos y as con Bases de Datos de menos de 500.000 registros es practicamente imbatible. La web tiene una comparativa que es impactante: http://www.mysql.com/information/benchmarks.htm en la que se compara su rendimiento con las ms conocidas Bases de Datos. Sus autores defienden el producto diciendo que para realizar transacciones ya tienen los bloqueos (exclusivamente a nivel de tabla) y que las transacciones son difciles de implementar y que poca gente las usa.

Las anteriores limitaciones hacen que el producto no sea apto para entornos crticos o lugares con masivas entradas de datos. S por el contrario para entornos no crticos y de mera lectura como por ejemplo un catalogo Web. En las pruebas que hemos hecho se ha observado que las Bases de Datos se pueden borrar desde Windows (algo parecido a lo que sucede con los DBF) y es algo diferente de otras bases de datos como SQL Server u Oracle que no se pueden borrar desde el sistema operativo y as tienen una mayor seguridad. En contra de lo que se piensa, MySQL slo es gratis si se usa privadamente y como servidor Web (aunque sea comercial). Su uso comercial por otras aplicaciones no servidoras Web (que necesiten MySQL para funcionar) est sometido a las condiciones de la licencia. En el entorno Open Source hay otras Bases de Datos como PostGresSQL que s soporta transacciones y tecnicamente est mejor que MySQL aunque por el contrario tiene un cdigo menos depurado. PostGreSQL tiene fallos de gestin de memoria mientras que a MySQL es muy difcil hacerla fallar. Por el contrario, PostGreSQL es Gratis y MySQL no siempre. Adems, mientras PostGres est disponible para todas las plataformas compatibles con UNIX. Para correr sobre Windows se deben usar las librerias de transporte de Cygnus Unix/NT. L ultima versin disponible es la PostgreSQL es la 7.0.3. A diferencia de MySQL que se puede bajar directamente la versin binaria para windows. PostGreSQL no tiene disponible una versin binaria para windows y deben realizarse todas las operaciones que en la documentacin se indican para que funcione en esos sistemas operativos: cosa harto engorrosa.

Instalacin de MySQL en un Entorno Windows

A la hora de instalarlo hay que diferenciar si estamos en Win 9x o en entornos NT/W2k pues las instalaciones son diferentes. En nuestro caso lo probamos en un Win95 (primera versin). En este entorno hubo que hacer lo siguiente para ponerla en marcha:

1.- Instalar el soporte de Microsoft Socket 2 (como se sabe Win 95 (primera versin) y la versin OEM de la Release 2 de Win 95 no venan con el socket 2 y es necesario intalarlo). En los ficheros de este mes est el instalador. Si lo instalas sobre Win98 o NT/w2k no es necesario que instales esto. 2.- Instalar MySQL 3.23. El instalador es el mismo para todas las versiones Win./NT/2000. Es mejor instalarlo en C:\ pues si se escoje otra unidad hay que hacer algunos cambios. En los ficheros del mes est la versin binaria de MySQL 3.- Instalar el Driver ODBC para MySQL. Tambin est entre los ficheros del mes. El instalador tiene un aire de 16 bits pero ya da totalmente soporte a 32 bits. Al instalarlo en una mquina Win 95 limpia no qued bien la instalacin y hubo que repetirla una vez instalado VFP 6.0 que ya incorpor el administrador ODBC32. Una vez instalado El Administrador se volvi a instalar y en este caso ya qued correctamente instalado. Un comentario aadido a la instalacin es que todos los ficheros necesarios se instalan en el directorio que se le indique y ninguno en Windows/System. Esto hace que: 1.- Reinstalar Windows sin formateo no afecta a la Base de Datos 2.- Los ficheros copiados son, tal cual, trasladables a otras mquinas sin complejas inscripciones en el Registry o cosas similares.

Puesta en marcha
Una vez instalado debemos ponerlo en marcha. Para ponerlo en marcha basta con ejecutar desde una ventana de rdenes DOS la instruccin:
C:\mySQL\bin\MySQLd

Si ests trabajando con Win NT la instruccin sera:


C:\mySQL\bin\MySQLd-nt

Para desconectarlo habra que poner:


C:\bin\mysqladmin -u root shutdown

Esto sorprende un poco pues una vez puesto en marcha no se observa ningn icono o advertencia de que est en marcha: quizs es una deformacin del mundo Windows... Para comprobar que est en marcha podemos escribir: C:\ bin\mysqlshow Que nos dira qu bases de datos tenemos en este momento en el Servidor

Manipular la Base de Datos desde el Shell


MySQL como una herencia de sus raices Linux se puede interactuar con ella desde la ventana de DOS cargando su shell. Las cosas que se pueden llegar a hacer son las siguientes: Crear un Base de Datos:
C:\mysql\bin>mysqladmin create database01

Esto nos crear dentro de c:\mySQL\Datos\ un directorio con ese nombre pero vaco. Segn vayamos creando tablas se irn incorporando a ese directorio. Activar el Shell:
C:\mySQL\bin\mySQL

Con esto queda activo el shell y ahora podemos empezar a escribir instrucciones SQL Listar todas las tablas de una Base de Datos:

mysql> show tables;

+----------------------+ | Tables in database01 | +----------------------+ | table01 | | table02 | +----------------------+

Listar los campos de la tabla

mysql> show columns from table01; +---------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+----------+------+-----+---------+-------+ | field01 | int(11) | YES | | | | | field02 | char(10) | YES | | | | +---------+----------+------+-----+---------+-------+ Insertar un registro en una tabla

mysql> insert into table01 (field01,field02) values (1,'first'); Query OK, 1 row affected (0.00 sec)

Listar todos los registros de una tabla


mysql> select * from table01; +---------+---------+ | field01 | field02 | +---------+---------+ | 1 | first | +---------+---------+

Modificar Tablas
mysql> alter table table01 add column field03 char(20); Query OK, 1 row affected (0.04 sec) Records: 1 Duplicates: 0 Warnings: 0

Tambin se puede ejecutar varias lneas de instrucciones El Shell de MySQL te permite poner las instrucciones en una sola lnea o en mltiples lneas . Ten en cuenta que como un residuo de las pocas del teleproceso el final deber tener un punto y coma Se muestra a continuacin las dos formas de hacerlo: Una sola lnea:
mysql> create table table33 (field01 integer,field02 char(30));

Varias lneas:
mysql> create table table33 -> (field01

-> integer, -> field02 -> char(30));

El resto es mirar la documentacin y ver todas las opciones disponibles.

Ejecucin desde Visual FoxPro


Para acceder a la Base de Datos MySQL desde Fox lo primero que deberemos hacer es configurar el Origen de Datos, para eso hay que ir al Administrador ODBC y configurar, en nuestro caso un DSN (la instalacin del Driver ODBC MySQL por defecto te instala un Origen de Datos llamado mySQL-Test que apunta a la Base de Datos de prueba Test que se instala con MySQL. Para nuestro caso vamos a cambiar el usuario por root que es el que tiene todos los permisos de creacin de Bases de Datos, etc... y poner como Host la direccin IP de nuestra mquina. En nuestro caso 192.168.1.3 Al final nuestro origen de datos queda de la siguiente forma:

Una vez hecho lo anterior intentamos conectarnos desde Fox con las instrucciones:
SQLCONNECT()

Un cdigo sencillo de inicio para probar que todo va bien podra ser:
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 Prez', 'C/ Laguna 15. Sevilla',; '95.455.55.55', 'juan@agenda.com')" )

*- Nos traemos todo ? sqlexec(nHandle,"Select * from agenda") ? sqldisconn(nHandle) brow

Siempre que exista un dato incorrecto o se desconozca un dato se nos mostrar esta ventana. Una vez correctamente configurada, es mejor marcar el Dont prompt on conect. A partir de aqu el resto es usar las opciones que Visual FoxPro tiene para el tratamiento Cliente/Servidor que no las comentamos pues no son tema de este artculo

Los Bloqueos
Al no tener transacciones, los bloqueos toman bastante importancia, sobre todo al ver que los bloqueos son exclusivamente de tabla (no hay de registro) y pueden ser de lectura o de escritura. El siguiente cdigo nos ilustra su fucionamiento:
mysql> LOCK TABLES trans READ, customer WRITE; mysql> select sum(value) from trans where customer_id= some_id; mysql> update customer set total_value=sum_from_previous_statement where customer_id=some_id; mysql> UNLOCK TABLES;

Como ves este cdigo es muy parecido al de Fox 2.x usando el FLOCK y UNLOCK.

Interfaces Grficos
Esta versin viene con un muy pero que muy rudimentario interfaz grfico que sera el equivalente del Query Analizer de SQL Server y que permite visualmente saber que Bases de Datos tenemos y qu tablas y tambin hacer consultas a las tablas.

Para cargarlo deberemos ejecutar el winmysqladmin.exe y ver el interfaz que nos muestra que es de lo ms espartano que se ha conocido. Al margen de este interfaz grfico tenemos otros como el de Mascon en http://www.scibit.com/Products/Software/Utils/Mascon.htm. De todos modos, en la documentacin del producto se indican unos cuantos gratuitos y de pago.

FoxPress Abril de 2001 2001 FoxPress. All rights reserved

http://efransiscus.wordpress.com/2009/03/15/tutorial-using-mysql-odbc-connector-with-foxpro-9-andmysql/

Tutorial : Using MySQL ODBC Connector with Foxpro 9 and MySQL


Posted by: ef on: March 15, 2009 In: Computer | Foxpro | MySQL 38 Comments Yesterday, I got a project to handle with MySQL and Visual Foxpro. Im used to MySQL, and so does with Visual Foxpro. The trouble is that Ive never work on both of them in the same time. Usually Im using Foxpro integrated DBMS when using Visual Foxpro, and MySQL used to be a DBMS when Im using PHP, C#, or ASP.Net. I got a little problem on connecting those software, but after multiple tries, it did works. How that happen? heres the simple tutorial: Note : Im using Microsoft Windows XP SP 3, Visual Foxpro 9, and WAMP server 1.7.3, Im working on a single desktop pc. Im sorry i didnt include the images example on doing this, hope with just the texts you would understand how it works. First, create a database on MySQL. The database is quite important, because when you install and configure ODBC, theres an option of which databases you want to use. Im also using PHPmyadmin for the GUI of the database application. heres for example. > CREATE DATABASE dbfarmasi > CREATE TABLE `dbfarmasi`.`tb_brg` (`kdbrg` CHAR( 6 ) NOT NULL ,`nmbrg` VARCHAR( 50 ) NOT NULL , PRIMARY KEY ( `kdbrg` )) ENGINE = INNODB > INSERT INTO `dbfarmasi`.`tb_brg` (`kdbrg` ,`nmbrg`) VALUES ( 00001, First item ); > INSERT INTO `dbfarmasi`.`tb_brg` (`kdbrg` ,`nmbrg`) VALUES ( 00002, Second item ); im named the database dbfarmasi and the table tb_brg. So here, we got a database and a table, rock! Then you download a software called MySQL ODBC Connector. Im using mysql-connector-odbc3.51.25-win32.exe, which is free, and can be downloaded by visit mysql site. You can try to google it. Install. After installation has done, you should go to Control Panel > Administrative Tools > Data Sources (ODBC). And then theres pop-up window of ODBC. In User DSN tab, right side, press Add button, and select MySQL ODBC 3.51 Driver as the data source, and Finish. Another windows will appear, it is a configuration window for ODBC. Try this : Data source name : koneksi Description : connect foxpro and mysql Server : localhost User : root Database : dbfarmasi

The DSN name is up to you, so does the description. The default Server is localhost, cause Im not using remote database. Default user name is root, as the first super user name in mysql. Im using no password on mysql (it is set to none by default when youre install WAMP) and the database Im using is dbfarmasi, as ive created before. Ta-da. The connection has been made. Now, for the visual foxpro. here is a simple one : Create a project, whatever the name is, save it. on Project Manager window, choose Code tab. Press New on Program. Here is the code: PUBLIC P1 STORE SQLCONNECT(koneksi, root) TO P1 close and save it to name : setdatabase now, back to Project Manager window, choose Document tab, press New button to create a new form, and pick the New Form, not the Form Wizard thing. After that, an empty form will appear. create a two Textboxs. named the first textbox to : txtkdbrg and the second textbox to : txtnmbrg. Add a grid to form. named it as gridContainer. Now double-click the form, select the object form1 and the procedure init, and add this code: DO setdatabase thisform.gridContainer.RecordSource=" SQLEXEC(P1,select * from tb_brg,tb_brg) IF NOT USED(tb_brg) USE tb_brg ALIAS tb_brg ENDIF SELECT tb_brg thisform.gridContainer.RecordSource=tb_brg Save the form and run it. TA-DA. It works, its connected. The content of table tb_brg is showed by the form by the gridContainer. It means that the ODBC works. Here the connection thing : do setdatabase SQLEXEC(P1,select * from tb_brg,tb_brg) means : run program code setdatabase (which weve created before, for connection) select P1 as ODBC connection DNS, (connection name variable in setdatabase (replace SQLCONNECT(bla bla bla)) select * from tb_brg, the sql query, select all from table tb_brg tb_brg, is a cursor in visual foxpro, that used for alias. So, with SQLEXEC([connection name],[sql query],[cursor name]), you can do sql command: SELECT. Dont forget to add cursorname/alias when youre using SELECT. You dont have to add cursorname if youre using INSERT or DELETE query. example :

SQLEXEC(P1,insert into tb_brg (kdbrg,nmbrg) values (+thisform.txtkdbrg.value+,+thisform.txtnmbrg.value+)) means you insert value from textbox (txtkdbrg and txtnmbrg). for delete command example : SQLEXEC(P1,delete from tb_brg where kdbrg =+thisform.txtkdbrg.Value+)

http://www.youtube.com/watch?v=xY3ZxT_LZIQ Buenas a todo el foro, he subido un nuevo video a youtube donde trato de explicar como hacer una conexion a mysq dese como crear el usuario ir a la maquina remota y hacer una simple consulta y conexion a mysql desde visual foxpro. Este es el link http://www.youtube.com/watch?v=xY3ZxT_LZIQ y el codigo simple es el siguiente deben de considerar la ip del servidor o cambiarla a localhost para usarla en modo este es el codigo *// MyBusinessDelta RELEASE Con PUBLIC Con TRY *// los siguientes datos dependen de la configuracion de Mysql *// usuario y contrasa *// cadena de conexion Con = SQLSTRINGCONNECT("DRIVER={MySQL ODBC 5.1 Driver};" + ; "SERVER=192.168.1.79;" + ; "UID=es_binario;" + ; "PWD=bynary;" + ; "DATABASE=lionas;" + ; "OPTIONS=131329;") *//mensage MESSAGEBOX("La conexion fue exitosa") *// consulta SQLEXEC(Con,"Select * from almacen","cursor_mi_consulta") SELECT cursor_mi_consulta browse CATCH MESSAGEBOX("Ocurrio un Error al Conectar",48,"Error...!!!") RETURN ENDTRY SQLDISCONNECT(Con) &&cerramos la conexin con la BD saludos.

Como primera sugerencia te puedo decir que cambies el controlador ODBC por el 3.51. el 5.1, al menos a mi siempre me dio problemas. Luego para conectarte lConecta=SqlConneccion(lServidor,lBase,lUsuario,lPass) Funct SqlConneccion lPara lServidor,lBase,lUsuario,lPass lcCadenacnn = "Driver={MySQL ODBC 3.51 Driver};Port=3306;"+; "Server="+lServidor+";"+; "Database="+lBase+";"+; "Uid="+lUsuario+";"+; "Pwd="+lPass SqlSetProp(0, "DispLogin", 3) lConecta=SqlStringConnect(lcCadenacnn) Retu lConecta EndFunc

http://es.scribd.com/doc/77235583/100/Creating-a-database

Anda mungkin juga menyukai