Pular para o conteúdo

dbQuery

Servidor Banco de dados OOP conexao:query(...)

Dispara uma consulta e devolve um handle para você ler o resultado com dbPoll.

query dbQuery ( [ function callback [, table argumentos ] , ] db-connection aConexao, string sql [, ... ] )
NomeTipoPadrãoDescrição
callbackfunction—Opcional. Função chamada quando o resultado fica pronto.
argumentostable—Opcional, e só junto com callback. Valores repassados à função depois do handle.
aConexaodb-connection—Elemento devolvido por dbConnect.
sqlstring—Consulta a executar.
...any—Valores para os ? da consulta.

O handle da consulta (número), ou false se o elemento de conexão não estiver utilizável ou se faltar o texto da consulta.

Receber um handle não é garantia de que o SQL está correto: a consulta ainda não rodou quando o dbQuery retorna. Erro de sintaxe, tabela que não existe, conexão perdida — tudo isso volta depois, pelo dbPoll.

Usando um callback

Quando você passa um callback, o resto da sua função roda primeiro e o callback dispara em um frame posterior do servidor, depois que a consulta terminou. Ele recebe o handle da consulta como primeiro argumento, seguido dos valores da tabela argumentos. Como o resultado já está completo nesse ponto, dbPoll(consulta, 0) dentro do callback devolve as linhas sem esperar:

dbQuery(function(consulta, jogador)
local linhas = dbPoll(consulta, 0)
if linhas and linhas[1] then
setElementData(jogador, "dinheiro", linhas[1].dinheiro)
end
end, { jogador }, conexao, "SELECT dinheiro FROM contas WHERE nome = ?", getPlayerName(jogador))
  • dbConnect — Abre uma conexão com um banco de dados.
  • dbExec — Executa um comando SQL do qual você não precisa das linhas de volta.
  • dbPoll — Recolhe o resultado de uma consulta.
  • dbFree — Descarta um resultado que você não vai ler.
  • dbPrepareString — Monta uma string SQL com os valores já escapados no lugar dos ?.