Saludos amigos,
Esta es una pequeña clase para acceder a Mysql desde FWPCC usando la
libreria MysqlMovile
Esta es una pequeña clase para acceder a Mysql desde FWPCC usando la
libreria MysqlMovile
/*
 * 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 ENDDUMPSaludos,
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/