Code: Select all
//----------------------------------------------------------------------------//
// Soft4U Manu Exposito //
// Eagle1 Clases para manejo de MySQL desde xBase //
// //
// Pt18 : Ejemplo de connexion a MySQL y uso de BLOBs y MEMOs //
//----------------------------------------------------------------------------//
#include "InKey.ch"
#include "Eagle1.ch"
//----------------------------------------------------------------------------//
procedure main()
local oCon, oDataSet // Objetos
local cHost := "127.0.0.1"
local cUser := "root"
local cPwd := "root"
local cDb := "E1Prueba"
// Datos de la tabla
local cTable := "TestMemo"
local aStruct := { { "cmMiTexto", "M", 10, 0 } } // Array como lo devuelve DbStruct()
local cType := "BTREE" // Tipo de tabla en el servidor
local lTemporary := .f. // Indicador si es una tebla temporal
local lNotExists := .t. // Indicador de que la cree sólo si no existe
cls
// Creamos objeto conexion
oCon := TMSConnect():New()
// Intentamos la conexion
if oCon:Connect( cHost, cUser, cPwd, cDb )
/*
// Desmarca esto para ficheros de hasta 16m o cambia según convenga:
// Por defecto max_allowed_packet está a 1 Mb por lo que da el error
// si el Blob es mayor de 1Mb lo aumentamos a 16 M para evitar el error:
// "MySQL server has gone away"
oCon:Execute( "set @@global.max_allowed_packet=16*1024*1024" )
// Hacemos una reconexion para que asuma la variable cambiada:
oCon:ReConnect()
// Comprobamos las variables:
oDataSet := TMSQuery():New( oCon, "SHOW VARIABLES" )
oDataSet:Open()
GestBrw( oDataSet )
oDataSet:Free()
*/
// Si existe la tabla la borramos, sólo en esta demo ;-)
if oCon:oDataBase:DropTable( cTable )
MyMsg( "La tabla " + cTable + " ha sido borrada..." )
endif
// Creamos el objeto Tabla
oDataSet := TMSTable():New( oCon, cTable )
// Creamos la Tabla si no existe
if oDataSet:CreateTable( aStruct, cType, lTemporary, lNotExists )
MyMsg( "Tabla lista..." )
else
MyMsg( "Error en CreateTable()" )
oDataSet:Free() // Liberamos todo
oCon:Free()
Quit
endif
// Abrimos y nos traemos el resultado al cliente
if oDataSet:Open()
//--------------------------------------------------
// CREAR UN REGISTRO A PARTIR DE UN FICHERO
// Controlamos la existencia del fichero de entrada
if File( "pt18.prg" )
// Limpiamos el buffer estilo xBase
oDataSet:Blank()
// Cargamos el buffer interno con el contenido del fichero de cualquier tipo, en este caso
// con lo que haya en TEST.IN, podria ser jpg, gif, texto, sonido o lo que sea...
oDataSet:SetBuffer( 1, oDataSet:ReadFromFile( "pt18.prg" ) )
// Lo insertamos en la tabla
if !oDataSet:Insert( .t. )
MyMsg( "No se pudo insertar el registro..." )
end
else
MyMsg( "No encuentro el fichero de entrada..." )
endif
//--------------------------------------------------
// CREAR UN FICHERO A PARTIR DE UNA COLUMNA
if oDataSet:RecCount() > 0
// Nos vamos al primero
oDataSet:GoTop()
// Si existe el fichero de salida lo borramos
if File( "Test.txt" )
FErase( "Test.txt" )
endif
// Creamos el fichero de salida Test.out a partir de la columna 1
// que puede ser de cualquier tipo, especialmente BLOBs
if oDataSet:WriteToFile( 1, "test.txt" )
MyMsg( "Vamos a ver el fichero de salida..." )
// Lo presentamos en pantalla:
DispBox( 00, 00, 24, 79 )
MemoEdit( MemoRead( "test.txt" ), 01, 01, 23, 78, .f. )
else
MyMsg( "Error al crear el fichero de salida" )
endif
else
MyMsg( "No hay registros en la tabla..." )
endif
else
MyMsg( "Error al abrir la tabla: " + oDataSet:cName )
endif
oDataSet:Free() // Liberamos todo
oCon:Free()
else
MyMsgInfo( "No hay conexion", "Ojo" )
endif
return
//----------------------------------------------------------------------------//
#include "SimpleBrw.prg"
//----------------------------------------------------------------------------//