Jump to content

QATDB - QueryAble Text Data Base


ribeiro55

Recommended Posts

Titulo do Projecto: QATDB - QueryAble Text Data Base

Última Versão: 0.48 BETA

Site Oficial: http://www.risingcognition.com/dev/ TBA

Líder do Projecto: Sérgio Ribeiro (ribeiro55)

Descrição do Projecto: Sistema de base de dados baseada num ficheiro de texto. Ideal para utilizar em pequenas necessidades de pequenas aplicações que não justifiquem soluções Microsoft e semelhantes.

Mais pontos no site (em Inglês)

Encontra-se na sua versão BETA, pelo que não se garante a perfeição das suas funcionalidades.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

  • Replies 165
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Ora, claro que existe.

Se fossemos por aí não se fazia nada. 😁

Queria apenas provar (nem que seja a mim mesmo) que um Portuga sem formação conseguia fazer algo que se chegasse perto.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Confesso que a utilização possa ser um pouco vaga e que o PDF não esteja 100% virado para a explicação exaustiva.

Conto fazer uns videos de explicação (como os da Microsoft) para o pessoal que estiver interessado.

Por falar no pessoal que estiver interessado em exprimentar, respondo a qualquer post aqui ou PM em relação à QATLANG 😛

O QAT eXplorer foi feito inteiramente com chamadas à biblioteca, para demonstrar a capacidade de independência que o motor tem. Por outras palavras, é possível a qualquer pessoa fazer um QAT eXplorer.

Tenho programadas umas adições interessantes como a capacidade de fazer JOINS, argumentos na query e stored procedures.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Ora bem, como sou suficientemente preguiçoso para usar SQLite 😄 resolvi dar uma oportunidade ao teu produto.

O que acontece é que nem uma base de dados consigo criar. Faço código para criar a instância, tudo bem, e depois quando chamo a função createDatabase é que o caldo fica entornado... Vou colocar aqui o código que fiz:

Public Class Form1
    Dim x As QATDB.QATCore

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        x = New QATDB.QATCore()
        x.DebugMode = True
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If x.CreateDatabase("wcconfig", "wcadmin", "wcconfig", My.Application.Info.DirectoryPath & "\") Then
            MsgBox("Base de dados wcconfig criada!")
        Else
            MsgBox(x.LastErrorMessage)
        End If
    End Sub
End Class

Ele vai-me parar sempre ao lastError, com a mensagem:

20-06-2009 [18:10:36]  -  Unable to write the QAT database file.

O directório onde me encontro:

C:\Documents and Settings\Andre Silva\Os meus documentos\Visual Studio 2008\Projects\QATDB testing\QATDB testing\bin\Debug

Já tentei com e sem a barra final, caminho relativo "./", mas dá o mesmo erro... É do programa, ou fui eu que meti água?

EDIT: Meti água... Afinal tinha de se indicar o caminho + ficheiro. :\

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Bom, estive a utilizar esta biblioteca até agora, e gostei, porque mesmo o facto da documentação estar ainda um pouco incompleta, não me impediu de ler e gravar os dados.

Só tenho uma sugestão, que no meu ponto de vista seria uma mais valia para o projecto:

Excepções: Para ser sincero, preferia um mecanismo de excepções em vez do actual de true/false e consulta ao lastErrorMessage. Primeiro, porque o lastErrorMessage mostra também mensagens de sucesso, e fica difícil criar programaticamente um mecanismo para apanhar erros de queries num ciclo, por exemplo. Depois, o true/false... Repara:

if not db.CreateDatabase("dcconfig", "dcadmin", "dcconfig", "dcconfig.db") then
  msgbox "ocorreu um erro ao criar"
  end
end if

' tabela de opcões
if not db.AddTable("options") then
  msgbox "ocorreu um erro criar tabela options"
endif

Agora com um sistema de excepções:

try

  db.CreateDatabase("dcconfig", "dcadmin", "dcconfig", "dcconfig.db")
  db.AddTable("options")

catch ex as QATException
  msgbox "Ocorreu um erro: " & ex.toString
end try

Com excepções evitas aquele molho de if's pelo meio do código. QATException seria uma classe que estende a classe Exception, na qual poderias criar os teus próprios códigos de erro, e por exemplo, separar a parte de relatório de erros do projecto numa classe à parte.

De resto gostei muito e tem tudo o que preciso para um projecto que estou a reanimar, precisamente pela falta de um local onde guardar as configurações.

Mas já agora, tenho outra dúvida (menos parva espero...):  estou a guardar strings com espaços no num campo, e por alguma razão que ainda não entendi, a query continua a dar erro de sintaxe, já revi as virgulas e parece estar tudo bem. Como nos teus exemplos não tinhas nada exemplos com espaços nas strings, pergunto se isso é suportado ou ainda não? E valores com virgulas?

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Felizmente estou a implementar novos métodos para o errorcatcher onde podes escolher se queres lançar excepções ou disparar eventos, com o erro ou mensagem detalhado e mais individualizado.

Quanto à segunda parte, quis implementar um sistema sem datatypes mas parece que estou a complicar o conceito 😄

Para preparares o valor que queres enviar em query, tens de o Modular.

Explico isso, um pouco mal confesso, na referência, sobre o título "Modulation and Demodulation"

O modulador/desmodulador está disponível na lib.

Usa o QAT eXplorer, clica no campo de escrever a query e depois carrega no botão à esquerda, com um "M" (de Modulate).

Vai-te aparecer uma caixa para escreveres. Escreve algo com espaços e vírgulas e tudo o que te lembres.

Ao carregares no OK, a introdução é modulada.

Para além disso, em cima da caixa de query tem uma série de caracteres que são utilizados internamente que quando clicados são passados para a caixa de query, já modulados.

Por exemplo, o espaço modulado fica #s

Não queria desistir da auto-detecção de datatypes e utilizar as aspas ou pelicas, pelo menos ainda não 🙂

Existem alguns pormenores como o AutoID que também são importantes e podem não estar muito explícitos.

Vou fazer, assim que tiver oportunidade, uns videos tipo os da Microsoft, com ambientes de teste e todo o tipo de situações.

Entretanto detectei também uns bugs na modulação, que nessa versão és capaz de descobrir, que já estão resolvidos. Vou subir a versão, oficialmente, segunda ou terça feira.

Fico bastante contente em saber que alguém, no mínimo, teve curiosidade em espreitar a lib 😁

Estava relutante em implementar JOINS e retorno de nomes de colunas, mas isto assim anima  🙂

Obrigado.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Esta biblioteca funciona e dá para as minhas necessidades, porque não usá-la? 😄

Quanto ao facto de ter de modular dados, não fazia a mínima ideia, confesso que não li essa parte do manual  ?

Não experimentei exaustivamente, mas não há problemas se a query contiver o cardinal? (se calhar é o tal que já está resolvido)

por exemplo:

e se escrever assim #s

e#sse#sescrever#sassim:#s#s

De qualquer das maneiras, vou aguardar por essa actualização, e depois cá devo estar eu novamente 😄

Cumps.

EDIT: Os métodos do QATTools são estáticos? Pela documentação dá aspecto de o serem, no exemplo da msgbox, mas no uso, tens de se instanciar a class QATTools.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Não são estáticos mas é uma hella'good idea 🙂

Nessa versão tens de instanciar QATTools.

A próxima versão já vai ter muita coisinha nova!

Ter um user é diferente do que ser so eu e um colega meu a usar é mesmo produtivo 😁

Já descobri mais cenas para melhorar agora contigo do que no mes ou 2 meses há que esta biblioteca foi escrita 😄

Quanto aos cardinais, não tem problema nenhum. É alias, assim que deve de ir.

Pensei que fosse mais fácil, em termos programáticos porque não tens de te preocupar com pelicas ou aspas, basta modular o valor.

Mas ainda vou pensar se vale a pena enviar todos os valores com aspas ou pelicas, para evitar a modulação, para além dos já, a meio caminho, parametros.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Libertei uma nova versão.

0.42B que já conta com a tua sugestão de error reporting, colunas nomeadas em datatable e parâmetros.

As QATTools são agora métodos estáticos. Nem fazia sentido não serem. Obrigado B)

Também resolvidos estão os problemas com a modulação/desmodulação.

O QAT eXplorer também subiu de versão para suportar parâmetros.

De novo, sempre "aval" para dúvidas.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

  • 2 weeks later...

Nova versão. 0.43B em http://www.risingcognition.com/qat/

Esta versão já conta com 4 adicionais funções à QATLANG e suporte para operações com datas.

Funções adicionadas:

FIRST

Para apanhar certa coluna do primeiro registo

LAST

Para apanhar certa coluna do último registo

LUCKPICK

Para apanhar certa coluna de um registo aleatório

MATCHLIST

Uma espécie de JOIN do MSSQL para complementar dados da tabela base com dados de outras tabelas.

Toda a síntaxe nova está exemplificada no QATeXplorer, bem como todas as funcionalidades previstas, pelo que é boa ideia começar por aí.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.