Escrita de Arrays no Banco de Dados

Post Reply
Wallacy
Posts: 24
Joined: Thu May 30, 2019 8:05 pm

Escrita de Arrays no Banco de Dados

Post by Wallacy »

Caros amigos, boa tarde!

Preciso de uma ajuda para prosseguir com um projeto. Basicamente, preciso trabalhar com arrays no banco de dados, fazer escritas e consultas. Podem me ajudar nesse sentido?
User avatar
ViniciusMoraes
Administrador
Posts: 36
Joined: Sat Oct 22, 2016 1:48 am
Contact:

Re: Escrita de Arrays no Banco de Dados

Post by ViniciusMoraes »

Prezado, boa tarde!

Elaboramos o seguinte exemplo para responder esta sua dúvida:

Code: Select all

-----------------------------------------------------------------------------------------   
-- Função para conversão de uma tabela LUA em uma string com a representação da tabela
-- Exemplo: {1,2,3,4,5} --> '{1,2,3,4,5}'
-----------------------------------------------------------------------------------------   
local function table_to_string(tbl)
    local idx = 0
    local result = "{"
    for k, v in pairs(tbl) do
        if idx > 0 then
          result = result .. ','
        end 
        result = result .. v
        idx = idx + 1
    end
    return result.."}"
end


-----------------------------------------------------------------------------------------
-- Obtém tag local do Kernel(retentivo) do tipo vetor de inteiros
-----------------------------------------------------------------------------------------
local tag_vetor_inteiros    = Tags.Get("Kernel.Tags.Local.TagLocalGroup_001.vetor_inteiros")


-----------------------------------------------------------------------------------------
-- String com a representação de uma tabela LUA
-----------------------------------------------------------------------------------------
local string_vetor = '{6,7,8,9,10}'


-----------------------------------------------------------------------------------------
-- Abre conexão com o Database  
-----------------------------------------------------------------------------------------                       
local conSQLite = Database.Get("Globals.DataBases.DataBase_SQLite")


-----------------------------------------------------------------------------------------   
-- Executa comando para criar a tabela do banco
-----------------------------------------------------------------------------------------   
--[[
local affected_rows, error  = conSQLite:Execute('CREATE TABLE teste_vetor(valor_vetor TEXT NOT NULL)')
if error ~= nil then 
  print(error)
  return
end
 

-----------------------------------------------------------------------------------------  
-- Monta comando de inserção da tabela LUA no banco de dados
-----------------------------------------------------------------------------------------  
local sql_insert_tag_vetor    = string.format("INSERT INTO teste_vetor(valor_vetor) VALUES ('%s')", table_to_string(tag_vetor_inteiros.Value))
local sql_insert_string_vetor = string.format("INSERT INTO teste_vetor(valor_vetor) VALUES ('%s')", string_vetor)


-----------------------------------------------------------------------------------------  
-- Executa comando para inserir um registro na tabela
-----------------------------------------------------------------------------------------  
local affected_rows, error  = conSQLite:Execute(sql_insert_tag_vetor)
if error ~= nil then 
  print(error)
  return
end

local affected_rows, error  = conSQLite:Execute(sql_insert_string_vetor)
if error ~= nil then 
  print(error)
  return
end
]]-- 
  
    
-----------------------------------------------------------------------------------------  
-- Executa comando para consultar registros na tabela
-----------------------------------------------------------------------------------------  
local cursor, error  = conSQLite:Execute('SELECT * FROM teste_vetor')
if error ~= nil then 
  print(error)
  return
end
 

-----------------------------------------------------------------------------------------  
-- recupera dicionario {nome_coluna=valor}
-----------------------------------------------------------------------------------------  
local row = cursor:Fetch() 
if row == nil then
  print(error)
  return                  
end


-----------------------------------------------------------------------------------------  
-- Percorre os resultados da consulta
-----------------------------------------------------------------------------------------  
while row do
    
  -- Obtém o valor retornado pela consulta para a coluna valor_vetor
  valor_coluna = row['valor_vetor']
  print('valor retornado do banco de dados(string) = ' .. valor_coluna)
    
  -- Transforma o valor obtido da coluna em uma tabela LUA
  pcall(load("vetor = " .. valor_coluna))
  
  -- Exibe o valor de cada posição da tabela LUA
  for i = 1, #vetor do
    print('Posição ' .. i .. ' - Valor ' .. vetor[i])
  end

  -- recupera o próximo registro
  row = cursor:Fetch()
end




Caso você precisar de mais informações para complementar esta aplicação, por favor, entre em contato com o nosso time de vendas e solicite algumas horas de engenharia.

E-mail de Vendas - HI Tecnologia: vendas@hitecnologia.com.br
Vinícius de Moraes
Vendas | Suporte Técnico Comercial

E-mail de contato: suporte@hitecnologia.com.br
Telefone: (19)2139-1700 - (Opção 2 - Suporte Técnico).
Post Reply