Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Descrição:

Classe de bulkinsert via insertInto. Os dados são recebidos pela aplicação, que sabe o momento certo de disparar o insert no banco.

Dica
titleMuito mais desempenho

A utilização da classe FWBulk comparada com um processo que envolva diversos inserts no banco chega a ser de 30% a 40% mais performática.

Informações
titleImportante

Para a sua utilização é necessário possuir DBAccess com versão maior ou igual a 20181212 e versão de lib maior ou igual a 20201009.




Métodos:




New()

Sintaxe:

FwBulk():New()

Descrição:

Método de inicialização da classe

Parâmetros:

NomeTipoDescriçãoObrigatório
cTableCaráctertabela que será utilizada no processo de bulkinsertX
nLimitNuméricoQuantidade de registro que será utilizado no flush dos dados. Opcional. Default 600

Retorno:

Objeto da classe FWBulk


SetFields(aFields)

Sintaxe:

FWBulk():SetFields( aFields )

Descrição:

Indica para a classe FWBulk quais os campos serão utilizados no processo

Parâmetros:

NomeTipoDescriçãoObrigatório
aFields Array Array dos campos, onde {{Campo},{Campo}}. Pode-se enviar como conteúdo o retorno da função dbstruct.X

Importante!

A ordem desse array deve ser a mesma dos dados informados no método AddData.


SetTable( cTable )

Sintaxe:

FWBulk():SetTable( cTable )

Descrição:

Indica o nome da tabela no banco de dados

Parâmetros:

NomeTipoDescriçãoObrigatório
cTable CarácterNome da tabela do banco de dadosX

AddData( aData )

Sintaxe:

FWBulk():AddData( aData )

Descrição:

Adiciona dados ao bulk. Caso o limite de dados seja alcançado, também faz o flush dos dados.

Parâmetros:

NomeTipoDescriçãoObrigatório
aDataArray Array dos dados que serão persistidos no banco de dados, onde {valor,valor}X

Importante!

A ordem desse array deve ser a mesma dos dados informados no método SetFields.

Retorno:

lRet lógico, verdadeiro se conseguiu adicionar os dados ou fazer o flush


Flush()

Sintaxe:

FWBulk():Flush()

Descrição:

Faz o flush dos dados no sistema

Retorno:

lRet lógico, verdadeiro se conseguiu fazer o flush dos dados, caso contrário o erro pode ser resgatado pelo método GetError().


Close()

Sintaxe:

FWBulk():Close()

Descrição:

Finaliza o Bulk no sistema e atualiza a tabela. Caso existem dados em cache, faz o flush dos mesmos.

Retorno:

lRet lógico, verdadeiro se conseguiu fazer o flush dos dados, caso contrário o erro pode ser resgatado pelo método GetError().


Destroy()

Sintaxe:

FWBulk():Destroy()

Descrição:

Limpa o conteúdo do objeto da classe


Count()

Sintaxe:

FWBulk():Count()

Descrição:

Informa quantas linhas de dados já foram adicionadas no cache em espera para o flush

Retorno:

nCount numérico, quantidade de linhas de dados adicionadas ao cache


GetError()

Sintaxe:

FWBulk():GetError()

Descrição:

Método que retorna a string do último erro apresentado

Retorno:

cError string que contém o último erro apresentado


Reset()

Sintaxe:

FWBulk():Reset()

Descrição:

Limpa toda a classe retornando ao estado inicial


CanBulk()

Sintaxe:

FWBulk():CanBulk()

Descrição:

Indica se Bulk pode ser utilizado

Importante!

Não é possível a utilização desta classe em ambiente com banco SQLite!

Retorno:

lCanUse lógico, se verdadeiro,  o bulk está disponível para uso.




Exemplo:


Bloco de código
languagejs
themeRDark
titleExemplo
User Function myBulk()
 
    Local oBulk as object
    Local aStruct as array 
    Local nX as numeric 
 
    aStruct := {}
 
    aAdd( aStruct, { 'FIELD1', 'C', 10, 0 } )
    aAdd( aStruct, { 'FIELD2', 'N', 10, 2 } )
    aAdd( aStruct, { 'FIELD3', 'M', 10, 0 } )
    aAdd( aStruct, { 'FIELD4', 'D', 8, 0 } )
    aAdd( aStruct, { 'FIELD5', 'L', 1, 0 } )
 
    FWDBCreate( 'BULKTBL', aStruct , 'TOPCONN' , .T.)
 
    oBulk := FwBulk():New('BULKTBL')
    oBulk:SetFields(aStruct)
    
    For nX := 1 to 5        
        oBulk:AddData({cValToChar(nX),(nX,nX),cValToChar(nX),Date(),mod(nX,2)==0})      
    Next
    oBulk:Close()
    oBulk:Destroy()
    oBulk := nil
Return