Inicio | Artículos | Mysql | Conexion a mysql desde visual foxpro autor harumi pereda pascal
CONEXION A MYSQL DESDE VISUAL FOXPRO - AUTOR HARUMI PEREDA PASCAL
Publicado el Lunes 28 de enero de 2008 a las 17:27:40 por cesarperedat
Lecturas
Quiero Hacer una introduccion a iniciar en este manual sobre la conexion remota a MYSQL, en ayuda a los colaboradores de MYGNET quienes por medio de esta web solicitan en forma diaria, tal como desarrolle un manual llamado MANUAL DE SQL Y VISUAL FOXPRO .
Doy Gracias a DIOS por todo el conocimiento que dia a dia aprendemos y desarrollamos en ayuda de EL, asi mismo quiero dar GRACIAS A DIOS por tener siempre conmigo a mi linda hijita HARUMI PEREDA PASCAL quien me alienta sienpre a desarrollar y realizar los manuales de bolsillo para ayuda de los programadores que lo necesiten.
Recuerden ....¿Hay cosa alguna demasiada extraordinaria para JEHOVA? Génesis 1814, aun si nos ponemos a pensar que en el momento de la creación del universo, DIOS creo los cielos y la tierra aun resulto sin forma y desiertita y había oscuridad sobre la superficie de la profundidad acuosa y la fuerza activa de DIOS estaba moviéndose de un lado a otro sobre la superficie de las aguas. .Génesis 11 : 1-2, por eso es que los cielos cuentan la gloria de DIOS y el firmamento anuncia la obra de sus manos Salmos 19.2.
Recordemos que DIOS nos creo a imagen y semejanza suya, el cual debemos de cuidar nuestro cuerpo, no andando en adulterio ni fornicación, dañando a nuestro cuerpo ya que “el Cuerpo de ustedes es el templo del Espíritu Santo, que están en ustedes, el cual tienen de DIOS. I corintios 6:19-20.
Debiendo de resaltar que fuimos comprados por precio I corintios 6.20, sin falta glorifiquen a DIOS en el cuerpo de ustedes en conjunto, ya que la fornicación y el adulterio son pecados muy graves y detestables ante los ojos de DIOS. I corintios 6: 16-18.
Por eso hoy querido amigo te invito a buscar de DIOS, Tu que estas leyendo este mensaje es para ti, ya que EL es único que da la sabiduría y el conocimiento es DIOS y El es el único que nos puede salvar, ya que como sabemos nacemos con pecado, pero somos salvos por medio de la sangre de CRISTO JESUS. I corintios 6.20-24. DIOS TE BENDIGA.
En forma casi similar a realizar una conexion mediante vistas remotas de una base de datos en SYBASE, SQL SERVER es similar a efectuar la conexion mediante una vista remota a visual foxpro con una plataforma en MYSQL.
Pues, en muchas preguntas contenidas por la mayoria de los usuarios es la siguiente ¿Como realizamos una conexion y como nos conectamos a las tablas contenidas dentro de las mismas de una base de datos del MYSQL estando en visual foxpro.?
Pues la respuesta es sencilla, recordemos que si necesitamos conectarnos, lo que debemos hacer es primero la conexion , pues eso es mediante una conexion ODBC o una conexion tipo ADO ya sea en forma automatica dentro del ejecutable inicial de tu propio sistema dentro del visual foxpro.
*******************************************************************************
Para iniciar procedere a realizar una conexion a SQL estando en Visual foxpro, para efectos realizar la conexion remota, para ello considerare hacer la conexion a un servidor llamado SERVERPROXY, y la Base de datos lo llamare PADRON, lo puedes poner mediante una función y cada vez que necesites la conexión la mandas a llamar.*******************************************************************************
FUNCTION CONECTAR(PADRON)
lcDSNLess3="driver=SQL Server;server=SERVERPROXY;Trusted_Connection=yes;Persist Security Info=False;database="+MiBasedeDatos
THANDLE = SQLSTRINGCONNECT(lcDSNLess3)
If THANDLE < 0 &&Si no Se logra Conectar
=MessageBox("Ocurrio error ",0+64+0,"Error en conectar()")
QUIT
Else
= SQLSETPROP(THANDLE, 'Asynchronous', .F.)
Endif
RETURN(THANDLE)
********************
de esta manera te conectas , si hay problemas te mandara un error . si todo te salio bien es utilizar la conexión para realizar una consulta.
Local Handle,Cbusca
Handle=Conectar("PADRON")
Cbusca="Select * From clientes"
=SQLEXEC(Handle,Cbusca,"CoRders") && Ejecuto la Consulta
**************************************************************************
Otra segunda manera e ejecutarla es la siguiente :
**************************************************************************
PUBLIC PuConecion
PuConecion= SQLCONNECT('ODBC','PADRON','sa')
IF PuConecion<0
MESSAGEBOX("No se pudo establecer la conexión con Base de Datos",48,"Ventana de Control")
RELEASE Thisform
ENDIF
y después hacer la consulta sql
loSqlC= "SELECT * FROM clientes "
loEstadoSQL=sqlexec(PuConecion,loSqlC,"LoTablaLocal")
IF loEstadoSQL <= 0
MESSAGEBOX("Error al abrir Clientes",48,"Ventana de Control",200)
ENDIF
Sele LoTablaLocal
y de ahi puedes hacer las consultas a las tablas requeridas.
************************************************************************
Ahora crearemos la conexion a MYSQL cuyos procedimientos como veras son casi similares y faciles de entender, esperando que esto te sirva de ayuda te invito a que leas todos los manuales de bolsillo I, II II y IV acerca de programacion en el internet dentro de la web de mygnet. ***********************************************************************
xStrCon = "DRIVER={MySQL ODBC 3.5 Driver};";
+"SERVER=IPdelServidor;";
+"DATABASE=Pon el nombre de tu base de datos del MYSQL;";
+"USER=root;";
+"PASSWORD=pon tu clave del DSN;";
+"OPTION=3;"
xControl = SQLSTRINGCONNECT(xStrCon)
Donde xControl queda como una variable de memoria apuntador a la base de datos, para utilizarlo haces lo siguiente:
sqlexec(xControl,"select * from clientes","listaClientes")
*******************************************************************************
Asi mismo añadiendo a todo esto quiero agregar un comentario dado a una de las personas que se han contactado desde mexico, panama y venezuela solicitando dicha pregunta el cual explico en forma sintetizada, ya que esto los detalle en uno de los manuales, detallando lineas abajo.*******************************************************************************
*antes de nada el ejemplo a colocar es sobre una de las personas desde mexico llamada Rosa maria arjona.
Que hacer primero si deseo conectarme con una base de datos en MYSQL? Pues lo primero que debes hacer es descargar el archivo o driver para conectasre, en base al desarrollo de tu tabla que tengas.......
Dime y como creamos una tabla ...? Se crea una base de datos de ejemplo que se llama "ROSAMARIA", decido crearme mi propia base de datos, con mi propia tabla y un registro en ella.
Ahora los pasos son, me voy al menú de " inicio", "programas", "mysql", "MySQL Server 4.1", "MySQL Command Line Client". Me sale una ventanita negra que me pide el password y trata de acceder a internet. Supongo que como la como la conexión es a través de red, necesita el acceso a internet. Meto la password de root/administrador que puse al instalar y me sale un "prompt" de MySQL.
Voy a crear una base de datos, con una tabla y una entrada de datos para poder acceder desde java.
mysql> create database ROSA MARIA;
mysql> use ROSAMARIA;
mysql> create table personal (id smallint auto_increment, nombre varchar(50), nacimiento date, primary key(id));
mysql> insert persona values (NULL, 'ROSA CANO', '1984-08-10');
Continuando con la parte de interconexion, preocedemos
Lo primero que tenemos que hacer es asegurarnos que el Driver se carga en memoria de java, para ello
try
{
Class.forName("org.gjt.mm.mysql.Driver");
} catch (Exception e)
{
e.printStackTrace();
} Y como establecemos la interconexión con la base de datos llamada ROSAMARIA
Nuestro programa java, si quiere consultar la tabla de base de datos que hemos creado, deberá conectarse a este servidor.
Para establecer la conexion, la clase DriverManager
getConnection().
// Establecemos la conexión con la base de datos.
Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/ROSAMARIA","root", "la_clave");
El primer parámetro del método getConnection() es un String que contiene la url de la base de datos:
• jdb:mysql porque estamos utilizando un driver jdbc para MySQL, que es el que nos hemos bajado.
• localhost porque el servidor de base de datos, en mi caso, está en el mismo ordenador en el que voy a correr el prorama java. Aquí puede ponerse una IP o un nombre de máquina que esté en la red.
• prueba es el nombre de la base de datos que he creado dentro de mysql. Se debe poner la base de datos dentro del servidor de MySQL a la que se quiere uno conectar. Es el nombre que pusimos cuando desde SQL hicimos create database ROSAMARIA;
Los otros dos parámetros son dos String. Corresponden al nombre de usuario y password para acceder a la base de datos. Al instalar MySQL se crea el usuario root y se pide la password para él. Como no hemos creado otros usuarios, usaremos este mismo.
Podrias volver a explicarmelo mejor con otro ejemplo ?import java.sql.Connection;import java.sql.DriverManager;...try{ Class.forName("org.gjt.mm.mysql.Driver"); Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/agenda", "root", "LA_PASSWORD"); ...Para realizar cualquier acción sobre la base de datos (consulta, insertar nuevos registros, modificar los existentes o borrar), necesitamos una clase Statement. Para obtenerla, se le pide dicha clase a la conexión. La forma de hacerlo, para una consulta, es la siguiente:
// Preparamos la consulta
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");
La parte de createStatement() no tiene ningú secreto, salvo que puede lanzar una excepción que hay que capturar.
El Statement obtenido tiene un método executeQuery(). Este método sirve para realizar una consulta a base de datos.
• El parámetro que se pasa en un String en el que está la consulta en lenguaje SQL. No hace falta terminarlo con punto y coma. En nuestro caso "select * from persona". siendo persona el nombre que hemos puesto a la tabla en la base de datos.
• El resultado nos lo devuelve el método como un ResultSet. Este ResultSet no es más que una clase java similar a una lista en la que está el resultado de la consulta. Cada elemento de la lista es uno de los registros de la base de datos. En realidad, ResulSet no contiene todos los datos, sino que los va consiguiendo de la base de datos según se van pidiendo. Por ello, el método executeQuery() puede tardar poco, pero el recorrer los elementos del ResultSet no es tan rápido. De esta forma se evita que una consulta que dé muchos resultados tarde mucho tiempo y llene la memoria del programa java.
como podemos verr los resultados ??
El ResultSet contiene dentro los registros leidos de la base de datos. Inicialmente, tal cual nos lo devuelve el Statement.executeQuery(), tiene internamente un "puntero" apuntando justo delante del primer registro. El método next() del ResultSet hace que dicho puntero avance al siguiente registro, en este caso, al primero. Si lo consigue, el método next() devuelve true. Si no lo consigue (no hay siguiente registro que leer), devuelve false.
Por tanto, una forma de ir leyendo los registros en meternos en un while.
// Recorremos el resultado, mientras haya registros para leer, y escribimos el resultado en pantalla.
while (rs.next())
{
System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3));
}
Una vez que el "puntero" está apuntando a un registro, los métodos getInt(), getString(), getDate(), etc nos van devolviendo los valores de los campos de dicho registro. Podemos pasar a estos métodos un índice (que comienza en 1) para indicar qué columna de la tabla de base de datos deseamos. También podemos usar un String con el nombre de la columna (tal cual está en la tabla de base de datos).
Es responsabilidad nuestra saber qué tipo de dato hay en cada columna, aunque si nos equivocamos y RecordSet es capaz de hacer la conversión, la hará por nosotros. Por ejemplo, en cualquiera de los campos anteriores podemos pedir un getString() y nos devolveran los números como String y la fecha como String.
También podemos usar getObject(), y el RecordSet nos devolverá el Object más adecuado para el tipo de campo que pedimos. Cerrar la conexión
Una vez que terminamos de usar la conexión, se debería cerrar, o bien terminar el programa, con lo que se cierra automáticamente.
// Cerramos la conexion a la base de datos.
conexion.close();
Notas Adicionales de Ayuda Memoria :
* PruebaMySQL.java
*
* Programa de prueba para conexión a una base de datos de MySQL.
* Presupone que el servidor de base de datos está arrancado, disponible,
* en el puerto por defecto.
* El usuario y password de conexión con la base de datos debe cambiarse.
* En la base de datos se supone que hay una base de datos llamada prueba y que
* tiene una tabla persona con tres campos, de esta manera:
* mysql> create database rosamaria;
* mysql> use ROSAMARIA;
* mysql> create table persona (id smallint auto_increment, nombre varchar(60),
* nacimiento date, primary key(id));
*/
package chuidiang.ejemplos.base_datos;
import java.sql.*;
/**
* Clase de prueba de conexión con una base de datos MySQL
*/
public class PruebaMySQL {
/**
* Crea una instancia de la clase MySQL y realiza todo el código
* de conexión, consulta y muestra de resultados.
*/
public PruebaMySQL()
{
// Se mete todo en un try por los posibles errores de MySQL
try
{
// Se registra el Driver de MySQL
DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
// Se obtiene una conexión con la base de datos. Hay que
// cambiar el usuario "root" y la clave "la_clave" por las
// adecuadas a la base de datos que estemos usando.
Connection conexion = DriverManager.getConnection (
"jdbc:mysql://localhost/prueba","root", "la_clave");
// Se crea un Statement, para realizar la consulta
Statement s = conexion.createStatement();
// Se realiza la consulta. Los resultados se guardan en el
// ResultSet rs
ResultSet rs = s.executeQuery ("select * from persona");
// Se recorre el ResultSet, mostrando por pantalla los resultados.
while (rs.next())
{
System.out.println (rs.getInt ("Id") + " " + rs.getString (2)+
" " + rs.getDate(3));
}
// Se cierra la conexión con la base de datos.
conexion.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* Método principal, instancia una clase PruebaMySQL
*
* @param args the command line arguments
*/
public static void main(String[] args)
{
new PruebaMySQL();
}
}
[center]DIOS BENDIGA A TODOS Y RECUERDA DIOS ESTA CUANDO MAS LO NECESITES[/center]
[center]NADA HAY IMPOSIBLE PARA DIOS (Lucas 1.37)[/center]
Dedico cada uno de mis trabajos a una gran mujer que siempre estar en mi corazon quien dia a dia me levantare dando GRACIAS A DIOS po haberme puesto en su camino NINFA.
Agradezco mucho la información que proporcionas, me fue de mushisima utilidad no tienes idea. Comparto contigo de DIOS, no existe nada mas grande que EL, dios nos perdone y nos bendiga saludos a todos.