Clipper On Line • Ver Tópico - SQLite - Coluna DATETIME
Mudar para estilo Clássico
Discussão sobre SQL
Postar uma resposta

SQLite - Coluna DATETIME

23 Set 2018 21:04

Estou criando uma base de dados e tenho uma dúvida que já está solucionada mas eu acho que a colaboração de vocês pode render um código mais produtivo.
Ambiente:
HMG 3.4.4 ( SQLite nativo )

Código:
   LOCAL cSql :=    "CREATE TABLE cliente ( " +;
               " idcliente INTEGER PRIMARY KEY AUTOINCREMENT, " +;
               " nome CHAR(100), "+;
               " idade INTEGER, "+;
               " ultimocontato DATETIME DEFAULT ('0000-01-01 00:00:00'); "


Estou tendo alguma dificuldade com o retorno da consulta dessa tabela, com o seguinte código:

Código:
  cSql := "SELECT * FROM cliente"
...
..
   DO WHILE sqlite3_step( cRet ) == 100

      aLinha := {}
      nI := 0
      
      AADD( aLinha, sqlite3_column_int ( cRet, ++nI ) )      // idcliente
      AADD( aLinha, sqlite3_column_text( cRet, ++nI ) )       // nome   
      AADD( aLinha, sqlite3_column_int( cRet, ++nI ) )       // idade       
      AADD( aLinha, sqlite3_column_text( cRet, ++nI ) )       // ultimocontato

      AADD(aDados, aLinha)

   ENDDO


Até solucionei usando a seguinte linha:

Código:
  cSql := "SELECT idcliente, nome, idade, DATETIME(ultimocontato) FROM cliente"


Como vocês estão tratando isso ? ( sqlite3_column_type está me retornando 3 )

SQLite - Coluna DATETIME

24 Set 2018 21:42

Olá!

susviela@bol.com.br escreveu:Como vocês estão tratando isso ?


Nunca mexi com SQLite. Este tópico é meu primeiro contato com ele. Pesquisando sobre esse SGBD verifiquei - além do que já foi exposto em outro tópico de sua autoria - que é bem leve. Ainda não vi tudo mas, pelo menos stored procedures ele não tem.

Pesquisando sobre tipos de dados, descobri que ele trata os tipos da mesma forma que o Clipper, ou seja, o conteúdo da coluna define seu tipo (ou afinidade, como é tratado no jargão SQLite). Não sei até que ponto isto é bom ou ruim. Vejam Datatypes In SQLite Version 3

susviela@bol.com.br escreveu:Estou criando uma base de dados ...


Este é o melhor momento para já começar usando alguns padrões que podem ajudar na sequência do desenvolvimento e futuras manutenções. É uma ótima prática adotar padrão de nomenclatura para os objetos do banco de dados. Eu uso prefixos que ajudam a agrupar objetos e pesquisar no código fonte.

Prefixos para objetos (pode variar de um SGBD para outro)
    tb - tabela - tbCustomer
    vw - view - vwCustomer
    tg - trigger - tgInsertCustAddress
    sq - sequence - sqCustID
    fn - função - fnComputeAmountDue
    sp - stored procedure - spListAllProducts
    ix - índice - ixCustomerName

Prefixos para colunas
    fg - flag - fgActive
    cd - código - cdCustomer
    qt - quantidade - qtItems
    vl - valor - vlTotalOrder
    nm - nome - nmUser
    ds - descrição - dsStatus
    dt - data - dtLastUpdated
    hr - hora - hrStart
    ts - timestamp - tsInserted
    gi - guid (global unique identifier) - giIdentifier
    sg - sigla - sgUF
    st - status - stOrderStatus
    tx - taxa - txInterestRate
    tp - tipo - tpProductType
    nu - número -nuStreetNumber
    id - Identity - idOrderID
    pk - primary key - PKInvoice
    fk - foreign key - FKOrderItemProduct

SQLite - Coluna DATETIME

25 Set 2018 02:20

Não há nenhum problema no código abaixo, o erro esta apenas no CREATE, não fechou o parenteses.
susviela@bol.com.br escreveu:...Estou tendo alguma dificuldade com o retorno da consulta dessa tabela, com o seguinte código:
Código:
   DO WHILE sqlite3_step( cRet ) == 100

      aLinha := {}
      nI := 0
      
      AADD( aLinha, sqlite3_column_int ( cRet, ++nI ) )      // idcliente
      AADD( aLinha, sqlite3_column_text( cRet, ++nI ) )       // nome   
      AADD( aLinha, sqlite3_column_int( cRet, ++nI ) )       // idade       
      AADD( aLinha, sqlite3_column_text( cRet, ++nI ) )       // ultimocontato

      AADD(aDados, aLinha)

   ENDDO

SQLite - Coluna DATETIME

25 Set 2018 10:40

Eric.Developer escreveu:Não há nenhum problema no código abaixo, o erro esta apenas no CREATE, não fechou o parenteses


Ok, Desculpe o erro de digitação pois esse é um exemplo do código criado ... faltou mesmo o parenteses no final, obrigado por dispor-se em analisar o código.

alxsts escreveu:Olá!

susviela@bol.com.br escreveu:Estou criando uma base de dados ...


Este é o melhor momento para já começar usando alguns padrões que podem ajudar na sequência do desenvolvimento e futuras manutenções. É uma ótima prática adotar padrão de nomenclatura para os objetos do banco de dados. Eu uso prefixos que ajudam a agrupar objetos e pesquisar no código fonte.

Prefixos para objetos (pode variar de um SGBD para outro)

Prefixos para colunas


Opa ... muito boa essas dicas, algumas já uso em no Postgresql onde trabalho com desenvolvimento web, e optei por usar SQLite para desenvolver em desktop pela praticidade de ser embarcado, eu envio APENAS UM EXECUTÁVEL para o cliente e BINGO !!!!!!! (Qualquer semelhança com o Clipper não é mera coincidência ! )

Facilitar a vida do usuário com certeza vai aumentar o alcance dos seus sistemas .

SQLite - Coluna DATETIME

28 Set 2018 17:02

:-o
Susviela no site oficial achei esse comentário :

Se houver muitos programas clientes enviando SQL para o mesmo banco de dados em uma rede, use um mecanismo de banco de dados cliente / servidor em vez de SQLite. O SQLite funcionará em um sistema de arquivos de rede, mas devido à latência associada à maioria dos sistemas de arquivos de rede, o desempenho não será ótimo. Além disso, a lógica de bloqueio de arquivos é problemática em muitas implementações do sistema de arquivos de rede (no Unix e no Windows). Se o bloqueio de arquivo não funcionar corretamente, dois ou mais clientes podem tentar modificar a mesma parte do mesmo banco de dados ao mesmo tempo, resultando em corrupção. Como esse problema resulta de erros na implementação do sistema de arquivos subjacente, não há nada que o SQLite possa fazer para evitá-lo.
https://www.sqlite.org/whentouse.html

Será que é um balde de água fria ?

:'(

HASA

SQLite - Coluna DATETIME

28 Set 2018 17:12

:))
Sobre a dúvida https://www.sqlite.org/lang_datefunc.html
:)Pos
HASA

SQLite - Coluna DATETIME

29 Set 2018 11:12

HASA escreveu:Susviela no site oficial achei esse comentário :

Se houver muitos programas clientes enviando SQL para o mesmo banco de dados em uma rede, use um mecanismo de banco de dados cliente / servidor em vez de SQLite. O SQLite funcionará em um sistema de arquivos de rede, mas devido à latência associada à maioria dos sistemas de arquivos de rede, o desempenho não será ótimo. Além disso, a lógica de bloqueio de arquivos é problemática em muitas implementações do sistema de arquivos de rede (no Unix e no Windows). Se o bloqueio de arquivo não funcionar corretamente, dois ou mais clientes podem tentar modificar a mesma parte do mesmo banco de dados ao mesmo tempo, resultando em corrupção. Como esse problema resulta de erros na implementação do sistema de arquivos subjacente, não há nada que o SQLite possa fazer para evitá-lo.
https://www.sqlite.org/whentouse.html

Será que é um balde de água fria ?


Olha eu penso que para cada caso o desenvolvedor tem que procurar a melhor forma de armazenar informações, esse comentário é para evitar cobranças / expectativas em excesso sobre esse SGBD (muito verdadeira e honesta essa colocação no site do produto), se você procurar casos de sucesso do mesmo vai ver que ele é bem confiável. Se for comparar de forma injusta os DBFs também tem limitações e nem por isso deixam de ter MILHARES de casos de sucesso, aqui mesmo no fórum tem exemplos.

Se for uma aplicação com maior demanda eu penso em utilizar Postgresql, especificamente porque tenho mais conhecimento nesse SGBD, mesmo sabendo que MariaDB é mais utilizado pela comunidade harbour.

SQLite - Coluna DATETIME

29 Set 2018 11:32

:))
Obrigado, Carlos como é um mundo novo para mim as diversas dúvidas são inevitáveis, quanto ao PostgreSQL esse sim tive boas leituras nA Net e aqui no forum, de qualquer forma desculpe o "afobamento", vou me conter :)´
:-Y
HASA

SQLite - Coluna DATETIME

30 Set 2018 12:32

HASA escreveu::))
Obrigado, Carlos como é um mundo novo para mim as diversas dúvidas são inevitáveis, quanto ao PostgreSQL esse sim tive boas leituras nA Net e aqui no forum, de qualquer forma desculpe o "afobamento", vou me conter ...
HASA


Que nada colega, é essa ânsia por saber/ conhecer / criar que move os programadores.

Uma dica, para alimentar / aguçar mais o seu interesse:

1) Esse mundo 0800 é maravilhoso, baixa esse gerenciador SQLite, e dá uma brincada com ele.

https://sqlitestudio.pl/index.rvt?act=download

2) Cria uma Banco / umas tabelas nesse banco;

3) Depois vai em TOOLS / OPEN SQL Editor ; ou (ALT + E)

Divirta-se ....

SQLite - Coluna DATETIME

01 Out 2018 09:05

:D :))
- Bom dia, vamos em frente.
:|< :|<
HASA
Postar uma resposta