Página 1 de 1

Harbour ORM

Enviado: 03 Mar 2021 11:12
por Itamar M. Lins Jr.
Olá!
The ORM acronym stands for Object Relational Mapper. ORMs are a method to access and manipulate data using objects, instead of direct access to SQL backends or other data stores.
https://github.com/EricLendvai/Harbour_ORM
Já está funcional!
Para MariaDB/MySQL e PostgreSQL

Saudações,
Itamar M. Lins Jr.

Harbour ORM

Enviado: 03 Mar 2021 12:11
por JoséQuintas
DbCreate(::p_CursorName,l_Structure,'SQLMIX',.T.,::p_CursorName,,"UTF8")
select (l_select)
Achei que ia ser interessante...
Mas vendo isso.... sei lá...

Talvez alguém pudesse dar uma olhada em VBMySQLDirect, é um fonte pra usar a DLL do MySQL como se fosse ADO, mas usando apenas a DLL.
Esse negócio de trabalhar igual DBF não dá certo.

Nota: apesar que agora parece difícil achar o fonte, devo ter em CDs antigos aqui.

Harbour ORM

Enviado: 03 Mar 2021 12:36
por Itamar M. Lins Jr.
Olá!
Esse negócio de trabalhar igual DBF não dá certo.
PRÉ CONCEITO!
Ele usa comandos do VFP, não viu os exemplos ?

Código: Selecionar todos

oSQLConnection1 := hb_SQLConnect()
with object oSQLConnection1
    :SetBackendType("MariaDB")
    :SetUser("root")
    :SetPassword("rndrnd")
    :SetDatabase("test001")
    // :SetServer("127.0.0.1")
    iSQLHandle := :Connect()
    do case
    case iSQLHandle == 0
        ?"Already Connected"
    case iSQLHandle < 0
        ? :GetLastErrorMessage()
    otherwise
        ?"connection is",iSQLHandle
    endcase

    ?"MariaDB Get last Handle",:GetHandle()
...

Código: Selecionar todos

REQUEST HB_CODEPAGE_UTF8

REQUEST SQLMIX , SDDODBC

#define HB_ORM_CURSOR_STRUCTURE_POS      1
#define HB_ORM_CURSOR_STRUCTURE_TYPE     2
#define HB_ORM_CURSOR_STRUCTURE_LEN      3
#define HB_ORM_CURSOR_STRUCTURE_DEC      4
#define HB_ORM_CURSOR_STRUCTURE_NULL     5
#define HB_ORM_CURSOR_STRUCTURE_AUTOINC  6
#define HB_ORM_CURSOR_STRUCTURE_BINARY   7
#define HB_ORM_CURSOR_STRUCTURE_TRIM     8
#define HB_ORM_CURSOR_STRUCTURE_UNICODE  9
#define HB_ORM_CURSOR_STRUCTURE_COMPRESS 10

//=================================================================================================================
class hb_orm_Cursor
    hidden:
        data p_CursorName             init ""
        data p_Fields                 init {=>}   //Key is the FieldName, {cFieldType,nFieldLen,nFieldDec,lAllowNull,lIsAutoIncrement,lBinary,lTrimmed,lUnicode,lCompressed}
                                                  //Using flags for the extended attributes for performance reason mainly
        data p_AutoIncrementLastValue init 0      //If more than one field is marked as AutoIncrement, the value will be unique across all of them.
        data p_FieldsForAppend        init {}     //To make it faster during AppendBlank(), since only care to process certain fields
        data p_Indexes                init {=>}   //Key is the TagName, {cExpression,lUnique}
                                                  //      Future plans: {cExpression,lUnique,cDirection ("A"scending/"D"esending),cForExpression}

        method UpdateRecordCount()                /
Apenas não perdeu tempo reinventando a roda, usa o SQLMIX para trazer o resultado. Não tem nada de DBF.

Saudações,
Itamar M. Lins Jr.

Harbour ORM

Enviado: 03 Mar 2021 12:45
por Itamar M. Lins Jr.
Olá!
Alias SQLMIX não tem nada de DBF.
Se ele colocasse a extensão do resultado ResultSet_Array, dava no mesmo.
No fim só podemos usar comandos SQL para ler e gravar. Já falei sobre isso N vezes.

Saudações,
Itamar M. Lins Jr.

Harbour ORM

Enviado: 03 Mar 2021 13:52
por JoséQuintas
Enquanto ainda uso Windows, vou só de ADO mesmo.

Código: Selecionar todos

cnSQL := win_OleCreateObject( "ADODB.Connection" )
cnSQL:ConnectionString := "blablabla"
cnSQL:Open()
Temp := cnSQL:Execute( "SELECT ... FROM ..." )
DO WHILE ! Temp:Eof()
   Temp:MoveNext()
ENDDO
Temp:Close()
cnSQL:Close()