Melhores respostas de 'sqlite3' - Stack Overflow em Português
Respostas interessantes marcadas com a tag sqlite3
Se você precisa saber o tamanho exato durante a execução do seu código, está lascado. A única forma que vejo é ler a tabela toda e ir somando os tamanho reais ocupados. E isso nem dá pra fazer de forma direta. Tem que ver a implementação interna para calcular o tamanho de algumas colunas. E se a implementação mudar, já era. Ou seja, nem perca tempo com isto. ...
Se estiver usando o "interpretador" dele pode usar os comandos .tables ou schema, para listar as tabelas ou suas estruturas. Se deseja fazer isto em código e deseja um resultado que possa ser usado para algo na sua aplicação, consulte o dicionário de dados do banco de dados onde tem todas tabelas: SELECT * FROM sqlite_master WHERE type='table'; O WHERE é ...
respondida 15/12/16 às 15:09
Se estiver o interpretador basta usar .schema nome_da_tabela. Ele vai mostrar a query que grou isso para você. Ele não tem um mecanismo específico. Também pode chamar uma função que dê essa informação. Isto é feito com o PRAGMA schema.table_info('nome_da_tabela') Mas em sua aplicação provavelmente vai querer fazer diferente e consultar o tabela de ...
respondida 4/01/17 às 11:19
Nenhuma mainstream. Linguagem de programação é um conjunto de regras para escrever códigos que serão executados pelo computador, então não faz sentido o que foi perguntado. Mesmo as implementações de linguagens de programação não integram banco de dados. A implementação é fundamentalmente um compilador ou interpretador. Parte do que costuma ser considerado ...
respondida 5/11/15 às 4:34
Basicamente não dá. Qualquer tentativa falhará. Você não deu contexto ao que deseja fazer então pode ser que seu problema seja outro. Impedir o acesso ao arquivo Se você quer impedir um usuário de causar problemas com os dados. Esquece. Ele poderá fazer o que quer de uma forma ou outra. A única forma de não permitir que ele faça estrago é não deixar ele ter ...
Algo mais próximo ao comando DESCRIBE [tabela] do MySQL: PRAGMA table_info([tabela]); Caso queira algo mais detalhado: .schema [tabela] Também pode obter tudo invocando somente .schema sem especificar uma tabela. .schema Adicionalmente, é interessante também saber o equivalente ao SHOW TABLES; O comando é .tables ou .ta obs: [tabela] é um escopo ...
respondida 4/01/17 às 11:14
Acho que na verdade você esta querendo um gerenciador de Banco de dados, tal como o MySQL Workbench é para bancos de dados MySQL. Para SQLite eu já usei SQLiteExpert http://www.sqliteexpert.com e o SQLiteMan - http://sqliteman.com para gerenciar e debug de um projeto. Com elas é possível criar o banco, manipular as tabelas dentro e fora do emulador ou PDA. ...
Acho que você quer um Database Manager para SQLite? Se for o caso eu uso e recomendo o SQLiteStudio, não utilizo nada incrivelmente avançado em relação a base de dados SQLite, mais ele sempre me atendeu completamente. E uso esse somente para consultar a base de dados pelo eclipse, no caso do emulador, ou do dispositivo ser root, é muito útil, pois não ...
Grave em formato binário e não terá problemas. É temerário gravar um backup de um banco de dados como texto: #coding: utf-8 __author__ = 'Dener Carvalho' import sqlite3 import io #Conecta ao banco conn = sqlite3.connect('clientes.db') with io.open('clientes_dump.sql', 'wb') as f: for linha in conn.iterdump(): f.write("%s\n" % linha) ...
respondida 25/08/15 às 17:35
Primeiramente, como somos bons desenvolvedores, somos também preguiçosos: não vamos inventar a roda! Lidar com imagens no Android não é simples, portanto usaremos uma biblioteca para facilitar nossa vida. Os benefícios serão muitos. E como não podemos confiar em tudo quanto é projeto open source por aí, usaremos logo um do próprio Google e incluiremos no seu ...
A questão é que você esta criando um select baseado em variáveis criadas no FROM quando deveria ser diretas no SELECT. Altere sua query para. SELECT (select sum(VALOR) form LANCAMENTO where TYPE_RELEASE ='D') as VALOR_D, (select sum(VALOR) form LANCAMENTO where TYPE_RELEASE ='C') as VALOR_C ou SELECT saida.RESULT_D AS VALOR_D, saida.RESULT_C AS ...
respondida 17/10/17 às 12:55
O problema está na trigger de update. O update gerará o disparo da trigger, então você estará condenado a um laço infinito se não tratar corretamente. Talvez o seguinte funcione (ignora atualizações que não setam informações novas): CREATE TRIGGER INSTANCE_UPDATE AFTER UPDATE ON INSTANCES BEGIN UPDATE INSTANCES SET MODIFIED = DATETIME('NOW') WHERE ...
respondida 23/10/17 às 14:08
Eu iria por esse caminho: Como fazer comparações "case-insensitive" no SQLite?. É o simples. Note que algumas implementações do SQLite já possuem uma forma de lidar com isso, mas elas deixam de ter a maior vantagem do SQLite que é ser um código pequeno. Tem como vantagem lidar com casos mais sofisticados. Mas será mais lento. A pergunta ...
Precisa mandar compilar o SQLite junto usando alguma variação desta linha de comando: gcc main.c sqlite3.c -lpthread -ldl
respondida 26/10/15 às 22:23
Sua solução é válida (utilizar o AppDelegate) porém ela é ruim do ponto de vista da orientação a objetos. Você estará colocando no AppDelegate um atributo que não está logicamente relacionado a essa classe. Sugiro utilizar a mesma ideia (Singleton), porém criando um objeto específico para os dados compartilhados entre suas classes. Desse modo você diminui o ...
Você pode verificar passando o nome específico de um banco de dados. Algo assim: public static boolean doesDatabaseExist(ContextWrapper context, String dbName) { File dbFile = context.getDatabasePath(dbName); return dbFile.exists(); } EDIT: Complementando como sugerido: Se no Android você nunca tiver chamado o método onde cria a tabela (e ...
Primeiro, se está executando o return null; então está caindo no catch. Você não consegue ver o erro porque você está escondendo ele. A solução para isto é simples, pare de escondê-lo. Retire o try-catch e deixe a aplicação quebrar. Ela mostrará o erro para você. Sabendo qual é o erro fica mais fácil resolver o que está causando ele. Os programadores ...
Sincronizar os métodos de abertura, leitura/gravação e fechamento do banco individualmente não resolve um problema essencial que é a necessidade do acesso ao banco ser atômico. Facilitaria sua vida se ao invés de usar esse monte de synchronized dentro dessa classe (sincronizar em um Context ??) você usasse dentro do método doInBackground() de suas ...
O SQL abaixo (exatamente como está) já traz o resultado que você deseja: SELECT (select sum(VALOR) from LANCAMENTO where TYPE_RELEASE ='D') as RESULT_D, (select sum(VALOR) from LANCAMENTO where TYPE_RELEASE ='C') as RESULT_C
respondida 17/10/17 às 12:56
Como você poder ler no FAQ, essa é uma característica e não um BUG do SQLite. Diferente de outros bancos de dados, como MySQL por exemplo, o SQLite não utiliza uma tipagem rígida. Ao invés disso, é utilizado um sistema de tipagem genérica que está associado ao seu valor e não necessariamente ao tipo da coluna. Isso permite que o sistema utilize o que eles ...
respondida 25/02/18 às 20:41
Faça um filtro usando as clausulas: WHERE nome_da_coluna IN(valor+): Onde a cláusula WHERE determina quais linhas deverão ser retornadas segundo um critério, operador IN permite que você especifique um conjunto de valores para testar pertinência. nome_da_coluna é a coluna que contém os valore a serem usados pela filtragem. valor+ são um ou mais valores ...
respondida 28/03/21 às 12:33
É possível criar views sim, segue link da documentação oficial do SQLite. E aqui uma questão similar no SOEN. Exemplo: /* criar a view */ CREATE VIEW VIEW1 AS SELECT T1.*, T2.*, T3.* FROM TABELA1 AS T1, TABELA2 AS T2, TABELA3 AS T3 /* executar a view */ SELECT V1.* FROM VIEW1 AS V1 Não é necessário ter nenhuma ligação entre as tabelas, para utiliza-...
Então após, mais algum tempo de pesquisa, e seguindo alguns caminhos apontados por vocês, cheguei a uma "Receita de Bolo*¹" como eu procurava. Vou mostrar qual a solução que atendeu as minhas necessidades: Segui as dicas apontadas nesse link, fazendo algumas modificas para minhas necessidades public class DatabaseManager { private AtomicInteger ...
Dá um pouco de trabalho porque não tem nada prontinho para usar com o PHP (e boa parte das tecnologias), mas existem bibliotecas que podem ser integradas ou substituir o SQLite padrão: SQLCipher FreeSQLiteEncryption botansqlite3 SQLiteCrypto