Tmysql para MySqlMobile

Tmysql para MySqlMobile

Postby pablovidal » Tue Oct 27, 2009 2:47 pm

Saludos amigos,

Esta es una pequeña clase para acceder a Mysql desde FWPCC usando la
libreria MysqlMovile

Code: Select all  Expand view

/*
 * Fichero: tmysql.prg
 * Descripcion: Clase para acceder a Mysql desde FWPCC
 * Autor: Pablo Alberto Vidal
 * Fecha: 26/10/2009
*/


#include "FWCE.ch"

Class tMySql

 Data cHost     Init "localhost"
 Data nPuerto   Init 3306
 Data cUsuario  Init "root"
 Data cPassword Init ""
 Data cDataBase Init "test"

   Method Conectar()
   Method MsQuery( cQuery ) // Ejecuta un sentencia y devuelve un Array con los datos
   Method MsCommand( cQuery )  // Ejecuta un comando SQL y devuelve .T. o .f.
   Method End() InLine  MySQL_Disconnect()

EndClass

// Conectar a la Base de Datos
Method Conectar() Class tMysql
Local lOk := .F.

If ( MySQL_Connect( ::cHost, ::nPuerto, ::cUsuario, ::cPassword ) == 0 )
  If ( MySQL_Select_DB( ::cDataBase ) == 0 )
   lOk := .T.
  EndIf
EndIf

Return( lOk )

// Ejecuta un comando
Method MsCommand( cQuery )
Local lOk := .F.
 If( MySQL_Execute_Query( cQuery ) == 0 )
  lOk := .T.
 EndIf
Return( lOk )

//Devuelve un array de datos
Method MsQuery( cQuery )
Local aData       := {}
Local nField       := 0
Local nRow        := 0
Local cFieldValue := ""
Local nRet        := 0

  nRet := MySQL_Execute_Query( cQuery )
  If nRet != 0
   MsgInfo( MySQL_Get_Last_Error( nRet ) )
   Return( {} )
  endif

  aData := Array( MySQL_Get_RowCount() )
  For nRow := 1 to MySQL_Get_RowCount()
   aData[nRow] := Array( MySQL_Get_FieldCount() )
   For nField := 1 to MySQL_Get_FieldCount()
    nRet := MySQL_Get_Data( @cFieldValue, nRow, nField )
    If( nRet != 0, MsgInfo( MySQL_Get_Last_Error( nRet ) ),;
     aData[nRow][nField] := AllTrim( Upper( cFieldValue ) ) )
   Next
  Next

Return( aData )


// Codigo C tomado del foro y Escrito por
// Antonio Linares

#pragma BEGINDUMP

// field parameters for mysql_get_field_param() function
#define FIELD_PARAM_CATALOG              1
#define FIELD_PARAM_DB                   2
#define FIELD_PARAM_TABLE                3
#define FIELD_PARAM_ORIGTABLE            4
#define FIELD_PARAM_FIELD                5
#define FIELD_PARAM_ORIGFIELD            6
#define FIELD_PARAM_LENGTH               7
#define FIELD_PARAM_TYPE                 8
#define FIELD_PARAM_FLAGS                9
#define FIELD_PARAM_DECIMALS            10

int  mysql_connect( char * host, int iPort, char * pszUsername, char * pszPassword );
void mysql_get_last_error( int nErrorCode, char * pszError );
int  mysql_disconnect( void );
int  mysql_select_db( char * pszDatabaseName );
int  mysql_execute_query( char * pszQueryString );
int  mysql_get_fieldcount( void );
int  mysql_get_field( char * char_val, int * int_val, int nParam, int nIndex );
int  mysql_get_rowcount( void );
int  mysql_get_data( char * pszElem, int nRow, int nColumn );

#include <hbapi.h>

HB_FUNC( MYSQL_CONNECT ) // cHost, nPort, cUserName, cPassword
{
   hb_retnl( mysql_connect( hb_parc( 1 ), hb_parnl( 2 ), hb_parc( 3 ), hb_parc( 4 ) ) );
}

HB_FUNC( MYSQL_GET_LAST_ERROR ) // nCode --> cError
{
   char error[ 255 ];

   mysql_get_last_error( hb_parnl( 1 ), error );

   hb_retc( error );
}

HB_FUNC( MYSQL_DISCONNECT )
{
   mysql_disconnect();
}

HB_FUNC( MYSQL_SELECT_DB ) // cDataBaseName --> nRet
{
   hb_retnl( mysql_select_db( hb_parc( 1 ) ) );
}

HB_FUNC( MYSQL_EXECUTE_QUERY ) // cSQLQuery --> nRet
{
   hb_retnl( mysql_execute_query( hb_parc( 1 ) ) );
}

HB_FUNC( MYSQL_GET_FIELDCOUNT ) // --> nFields
{
   hb_retnl( mysql_get_fieldcount() );
}

HB_FUNC( MYSQL_GET_FIELD ) // nField, @cName --> nRet
{
   char fieldname[ 255 ];
   int int_buffer;

   hb_retnl( mysql_get_field( fieldname, &int_buffer, FIELD_PARAM_FIELD, hb_parnl( 1 ) - 1 ) );
   hb_storc( fieldname, 2 );
}

HB_FUNC( MYSQL_GET_ROWCOUNT ) // --> nRows
{
   hb_retnl( mysql_get_rowcount() );
}

HB_FUNC( MYSQL_GET_DATA ) // @cFieldData, nRow, nField --> nRet
{
   char buffer[ 8192 ]; // max data size = 8K

   hb_retnl( mysql_get_data( buffer, hb_parnl( 2 ) - 1, hb_parnl( 3 ) - 1 ) );
   hb_storc( buffer, 1 );
}

#pragma ENDDUMP
 
Saludos,

Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
User avatar
pablovidal
 
Posts: 401
Joined: Thu Oct 06, 2005 10:15 pm
Location: Republica Dominicana

Re: Tmysql para MySqlMobile

Postby mmercado » Sat Oct 31, 2009 9:35 pm

Hola Pablo:
pablovidal wrote:Esta es una pequeña clase para acceder a Mysql desde FWPCC usando la
libreria MysqlMovile

Muchas gracias por compartir este valioso instrumento. Abusando de tu generosidad si fuera posible que compartieras también la rutina de impresión (estoy atorado con eso en una aplicación mía), no te imaginas como me ayudarías.

Gracias nuevamente.

Un abrazo.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: Tmysql para MySqlMobile

Postby Antonio Linares » Sun Nov 01, 2009 6:39 am

Pablo,

Muchas gracias! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41312
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Tmysql para MySqlMobile

Postby pablovidal » Sun Nov 01, 2009 6:59 pm

Maestro Manuel,

En esta semana comienzo con lo de la impresion

Desde que lo tenga listo, le paso eso ...
Saludos,

Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
User avatar
pablovidal
 
Posts: 401
Joined: Thu Oct 06, 2005 10:15 pm
Location: Republica Dominicana

Re: Tmysql para MySqlMobile

Postby softruz » Thu Nov 26, 2009 10:42 am

Muy buenas, una pregunta no se si tonta, estas funciones ¿son de la librería de mysql?, es decir, de la:
C:\Archivos de programa\MySQL\MySQL Server 5.0\bin\libmySQL.dll

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Re: Tmysql para MySqlMobile

Postby Antonio Linares » Wed Dec 09, 2009 11:23 pm

Juan,

Esta Clase es para ser usada con la DLL MySQLMobile.dll, la cual puedes descargar en versión demo desde:
http://mysqlmobile.softonic.com/pocketpc

La libreria LIB que necesitas para enlazar el EXE, puedes generarla a partir de la DLL
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41312
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Tmysql para MySqlMobile

Postby softruz » Thu Dec 10, 2009 8:27 am

Muchas gracias Antonio.

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 2 guests