Versões comparadas

Chave

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

...

Descrição:
Informa a query a ser executada, deve ser utilizada a construção com os parametros com ? ao invés do valor, que posteriormente serão passados via setString, SetDate , etc, no caso de tabelas do dicionário de dados usarem a construção idêntica ao Embbeded SQL (%table:AliasEmDic%).

Parâmetros:

NomeTipoDescrição
cQueryCaracterQuery em SQL ANSI

...

Descrição:
Seta um parâmetro na query do tipo Boolean. Parâmetros iniciam sempre com 1.

Parâmetros:

NomeTipoDescrição

nParam

NuméricoNúmero do parâmetro (1..N)
lValueLógicoValor boolean a se passar na query
lProtheusLógicoSe .T. trata o lógico igual ao Protheus, .T. é Default


...


setDate()

Sintaxe:
FWPreparedStatement():setDate( nParam , dDate ) ->

...

Descrição:
Seta um parâmetro na query via String. Parâmetros iniciam sempre com 1.
Obs.: Deve-se passar a string normalmente, sem uso de aspas simples (') para o banco. Caso seja encontrado esse caracter, será considerado parte da string para o banco, e não como delimitador de string em SQL.

Parâmetros:

NomeTipoDescrição
nParamNuméricoNúmero do parâmetro (1..N)
cValueCaracterValor do conteúdo de String


Retorno:
cBuffer


...


setIn()

Sintaxe:
FWPreparedStatement():setIn( nParam , aValues ) ->

...

Descrição:
Executa a Query

Parâmetros:

NomeTipoDescrição
cAliasCaracterAlias a ser criado
aSetFieldArray

Vetor com os campos para execução  de TCSetField com a estrutura:                       [1] Nome do Campo
[2] Tipo
[3] Tamanho
[4] Decimal


Retorno:
xRet


...


setFields()

Sintaxe:
FWPreparedStatement():setFields( aSelect ) ->

...

Descrição:
Executa o TCSetField para todos os campos informados via parâmetro SetFields. É necessário que a query já esteja aberta.

Parâmetros:

NomeTipoDescrição
cAliasCaracterAlias que será realizado o TCSetField


...


getResultArray()

Sintaxe:
FWPreparedStatement():getResultArray( cAlias , lClose ) -> aResult

Descrição:
Retorna um array com todos os campos da query para todos os registros. Será utilizado o array de campo passado no SetFields, e não o DBStruct da query.
Esse método não faz DBGOTOP no alias, portanto o ResultSet será a partir do ponto que a "query" está posicionada.

Parâmetros:

NomeTipoDescrição
cAliasCaracterNome do Alias
lCloseLógicoSe .T. fecha o alias após consumir os valores. .T. é Default


Retorno:
aResult - Array com o resultado da query

...

Descrição:
Seta o Objeto

Parâmetros:

NomeTipoDescrição
oObjObjetoObjeto de conexão externo (ver Classe: FWDBAccess)


...


setNumeric()

Sintaxe:
FWPreparedStatement():setNumeric( nParam , nValue ) ->

...

NomeTipoDescrição
aParamsArrayArray com o valores a serem testados


...


setUnsafe()

Sintaxe:
FWPreparedStatement():SetUnsafe( nParam , xValue) 

Descrição:
Seta um parâmetro na query. Parâmetros iniciam sempre com 1.
Obs.:  Por enviar um parâmetro de forma não segura para o statment ele nunca deve ser utilizado
para inserir um parâmetro recebido por uma requisição HTTP, por exemplo, pois ele pode
receber um SqlInjection e causar problemas no sistema. Somente utilize este método
se você estiver seguro que o parâmetro enviado é seguro (por exemplo, trocar o nome de uma tabela de forma dinâmica)

Parâmetros:

NomeTipoDescrição
nParamNuméricoNúmero do parâmetro (1..N)
XValueVariantValor do conteúdo a ser incluído


Retorno:
nil 

...


Exemplo de Uso da Classe


Bloco de código
User Function tPrepStat
Local oStatement
Local cQuery
Local cFinalQuery 
Local cUser := "000001"
Local cPassword := "testeFWPS"

oStatement := FWPreparedStatement():New()
cQuery := "SELECT * FROM users WHERE username=? AND password=?"

//Define a consulta e os parâmetros
oStatement:SetQuery(cQuery)
oStatement:SetString(1,cUser)
oStatement:SetString(2,cPassword)

//Recupera a consulta já com os parâmetros injetados
cFinalQuery := oStatement:GetFixQuery()