Prévia do material em texto
Persistência de dados em dispositivos móveis APRESENTAÇÃO A persistência de dados, de forma geral, pode ser conceitualizada como o armazenamento coere nte e confiável das informações em um sistema de armazenamento de dados. A garantia da segu rança durante a manipulação e a persistência desses dados também será abordada, pois estes dev em se manter seguros e disponíveis somente para quem realmente deve ter o acesso. Nesta Unidade de Aprendizagem, você conhecerá sobre persistência de dados em aplicativos mó veis. Além disso, verá quais são as principais técnicas e ferramentas utilizadas para persistir os d ados em aplicação móvel, assim como quais são as formas de armazenamento e os principais co mandos SQL para manipulação dos dados armazenados em um banco de dados. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Explicar o que é a persistência de dados em dispositivos móveis e qual é a sua necessidad e. • Identificar as técnicas e as ferramentas na persistência de dados.• Praticar os principais comandos SQL.• INFOGRÁFICO Os dados e as informações manipuladas em uma aplicação móvel precisam ser preservadas e nã o podem ser perdidas quando a aplicação é encerrada. Para que isso não aconteça, existe a persis tência de dados. Uma aplicação precisa de dados persistentes. Assim, é possível dizer que a pers istência é um dos conceitos fundamentais no desenvolvimento de aplicações. Neste Infográfico, você vai ver alguns dos pontos de prós e contras em relação aos tipos de persi stência de dados. CONTEÚDO DO LIVRO Em aplicativos móveis, a persistência de dados pode ser conceitualizada como a garantia da não perda dos dados que estão sendo manipulados quando uma aplicação é encerrada. Essa expressã o é relacionada diretamente ao banco de dados. No capítulo Persistência de dados em dispositivos móveis, da obra Dispositivos móveis, base teó rica desta Unidade de Aprendizagem, você vai ver como funciona a persistência de dados nesses ambientes. Além disso, vai aprender alguns comandos principais do SQLite. Por fim, vai execut ar um passo a passo desde a instalação do SQLite até a sua manipulação, para uma melhor fixaç ão dos comandos. Boa leitura. DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS Olimar Teixeira Borges Persistência de dados em dispositivos móveis Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Explicar a persistência de dados em dispositivos móveis e sua necessidade. � Identificar as técnicas e ferramentas na persistência de dados. � Praticar os principais comandos Structured Query Language. Introdução Neste capítulo, você estudará o conceito de persistência de dados, como funciona sua integração em dispositivos móveis; as técnicas e ferramentas mais utilizadas na persistência, como o JavaScript Object Notation (JSON) e a linguagem de banco de dados Structured Query Language (SQL), bem como os principais comandos SQL utilizados no SQLite, uma das ferramentas mais utilizadas para a manipulação dos dados armazenados em aplicativos móveis. Persistência de dados A persistência de dados é o armazenamento de forma coerente e confiável das informações de um sistema, que estão em um meio volátil da memória, como a random access memory (RAM), em um dispositivo não volátil, por exemplo, o disco rígido. Trata-se da garantia de que as informações enviadas ao banco de dados não serão perdidas ou alteradas, nem deixarão de ser armazenadas, mantendo-as no meio físico recuperável. Pode-se utilizar a linguagem Java para exemplificar, geralmente, o armaze- namento de dados na aplicação desenvolvida nela está associado a um banco de dados relacional que usa a linguagem SQL, porém, existem alternativas para persistir os dados, como em arquivos eXtensible Markup Language (XML), JSON, arquivos texto, etc. Quando se pensa no cenário de um aplicativo móvel, a persistência de dados continua sendo necessária, mantendo-se igual nesses dispositivos e garantindo que os dados que estão sendo manipulados no aplicativo não sejam perdidos quando a aplicação for encerrada. Porém, o armazenamento de dados nem sempre seguiu essa forma mais complexa de estruturação. Houve uma época em que era feito por meio do Record Management System e, como não existiam tabelas, campos, tipos de dados, etc., tudo era armazenado como um vetor. Assim, para saber quando um campo iniciava ou terminava, era inserido um caractere especial nesse array unidimensional de bytes. Por exemplo, para salvar um registro com as informações de um aluno: maria;das dores;45;rua frederico da silva;porto alegre. Essa string virava um vetor de bytes e era persistida. Utilizando como base a plataforma do Google, quando se trata de persis- tência de dados com a Application Programming Interface (API) nativa do Android, existem algumas possibilidades boas. Pode-se incluir um par de chave-valor, chamado de shared preference, que armazena os dados de forma primitiva e privada; o armazenamento interno, que armazena os dados privados na memória do dispositivo; e o banco de dados relacional convencional, como o SQLite, que armazena os dados em um banco de dados privado. Há ainda a conexão de rede, que armazena os dados na Web com seu próprio servidor de rede, ou a possibilidade de armazenar os dados em servidores externos (na nuvem), guardando-os de forma pública e compartilhada. Nem sempre o aplicativo móvel se limita apenas ao armazenamento local de dados do usuário, da mesma forma que ele pode querer buscar informa- ções externas, como a previsão do tempo, a cotação do dólar do dia, etc. Tais informações estão armazenadas em um servidor Web externo (nuvem), e o aplicativo também precisa acessá-las. Todas essas soluções serão mais bem exploradas na seção de técnicas e ferramentas deste capítulo. Atente-se ao fato de que se o sistema de informação não conseguir manter os dados quando for encerrado, ele não será prático, nem usual. Persistência de dados em dispositivos móveis2 Integração de dados em dispositivos móveis A integração de dados em dispositivos móveis é vista como uma trama de téc- nicas e tecnologias necessárias para que haja conectividade entre os diferentes aparelhos de rede, smartphones, notebooks e computadores. Assim, um aplicativo móvel deve ser capaz de lidar com a troca de dados em ambientes heterogêneos e de baixa confiabilidade, de maneira segura, consistente e com desempenho. Quando se trata de segurança dos dados, de acordo com Janssen e Janssen (2013), refere-se às medidas protetivas de privacidade digital, que são utilizadas para impedir o acesso não autorizado aos computadores, banco de dados e sites. Essa segurança é vista como a proteção dos dados contra sua corrupção e pode ser chamada de segurança da informação. De acordo com Goodrich e Tamassia (2013), a segurança da informação se define em três termos: Confidencialidade, Integridade e Disponibilidade, que forma o acrônimo CID (ou CIA, em inglês Confidentiality, Integrity and Availability), conforme você pode ver na Figura 1. Figura 1. Conceitos CID ou confidencialidade, integridade e disponibilidade. Fonte: Goodrich e Tamassia (2013, p. 3). 3Persistência de dados em dispositivos móveis Basicamente, confidencialidade é a ação de evitar a revelação não autorizada de informação, e como os computadores estão em todos os lugares, podem executar ações e operações que a comprometem. Quando ferramentas são desenvolvidas para proteger essa confidencialidade dos sistemas, elas devem incorporar os conceitos de encriptação, controle de acesso, autenticação, autorização e segurança física. Já a integridade é a propriedade responsável por garantir que a informação não foi modificada de maneira não autorizada. Além dos conceitos relacio- nados à confiabilidade dos sistemas, existem outros projetados para apoiar a integridade, como as cópias de segurança, as somas de verificaçãoe os códigos de correção de dados. Esses conceitos possuem uma característica em comum, a redundância, replicando a informação para que seja possível corrigir e/ou detectar problemas na sua integridade. A disponibilidade, por sua vez, é a propriedade que objetiva manter a in- formação acessível e modificável no momento certo por aqueles que realmente estejam autorizados a isso. Da mesma forma que os anteriores, ela também tem conceitos mais específicos, como proteções físicas e redundâncias computa- cionais. Assim, a CID forma um tripé de apoio à segurança da informação, sendo todos mutuamente importantes. No banco de dados, também é importante você se atentar à consistência das suas transações, que podem ser definidas como uma unidade de trabalho lógica e atômica que contém uma ou mais diretivas SQL. Os efeitos de todas as instruções SQL em uma transação podem ser confirmados (aplicados ao banco de dados) ou revertidos (desfeitos do banco de dados) (ORACLE CORPORATION, 2019). Já as propriedades básicas de uma transação são popularmente conhecidas por Atomicidade, Consistência, Isolamento e Du- rabilidade, ou pelo acrônimo ACID. No Quadro 1, você pode entender melhor o que esse acrônimo significa. Atomicidade: Uma TRANSAÇÃO É uma unidade de processamento realizada integralmente ou não. Consistência: Uma TRANSAÇÃO Leva um banco de dados de um estado consistente a outro estado consistente. Quadro 1. Os conceitos de ACID: Atomicidade, Consistência, Integridade e Durabilidade (Continua) Persistência de dados em dispositivos móveis4 Isolamento: Uma TRANSAÇÃO Deve parecer como se estivesse sendo executada isoladamente. Durabilidade: As alterações aplicadas a um banco de dados por meio de uma TRANSAÇÃO Confirmada (efetivamente aplicada nele) devem persistir no banco de dados. Quadro 1. Os conceitos de ACID: Atomicidade, Consistência, Integridade e Durabilidade Quando se trata de desempenho em aplicativos móveis, o grande desafio está na conexão do acesso móvel às bases de dados remotas. Ao enviar uma requisição ao banco de dados, antes da obtenção da resposta, há uma série de verificações necessárias para garantir a segurança e a consistência das transações, que devem ser realizadas durante seu ciclo de vida. Todos esses pontos servem para aumentar o tempo de resposta que cada usuário terá em relação às suas ações no aplicativo. De qualquer forma, existem algumas técnicas que tendem a diminuir esse tempo, como a compressão de dados, a paginação de resultados e o caching. A integração de dados em dispositivos móveis deve ser muito observada; e sua segurança precisa ser um dos princípios básicos em uma aplicação móvel. Assim, todas as questões trazidas anteriormente referentes à segurança, à consistência e ao desempenho são fundamentais durante o desenvolvimento. Técnicas e ferramentas O paradigma de orientação a objetos (OOP, em inglês object-oriented program- ming) é utilizado para desenvolvimento de aplicações e contém o conceito de persistência, que possibilita que um objeto continue existindo após a finalização do processo que o criou, armazenando seu estado em disco e viabilizando sua posterior recriação. Pelos fundamentos em suas criações, a OOP e o paradigma relacional de banco de dados inviabilizam uma adequação para seu uso concomitantemente. No entanto, há uma técnica que ajuda a contornar as diferenças entre as duas (Continuação) 5Persistência de dados em dispositivos móveis abordagens, mundialmente conhecida como mapeamento objeto relacional (ORM, em inglês object-relational mapping), que é responsável por separar o mundo dos objetos do mundo das relações. Ele serve ainda para traduzir objetos de uma aplicação para tabelas de um banco de dados relacional, utili- zando metadados que descrevem o mapeamento entre esses objetos e o banco. Na Figura 2, você pode visualizar, de forma mais clara, como funciona a relação entre as aplicações OOP, o ORM e a base de dados relacional, sendo que o ORM fica no meio dessa interação. Figura 2. Modelo de alto nível sobre a interação das aplicações e do banco de dados com o ORM. Persistência de dados em dispositivos móveis6 Em relação ao armazenamento das informações em dispositivos móveis na plataforma Android, pode-se armazenar os dados de cinco maneiras diferentes, conforme Android... (2019). No Quadro 2, você pode ver os conceitos básicos de cada uma das formas de armazenamento. 1 Shared preferences: armazenam os dados primitivos privados em pares de chave-valor. 2 Armazenamento interno: armazena os dados privados na memória do próprio dispositivo. 3 Armazenamento externo: armazena os dados públicos em armazenamento externo compartilhado. 4 Banco de dados SQLite: armazena os dados estruturados em um banco de dados privado. 5 Conexão de rede: armazena os dados na Web com seu próprio servidor de rede. Quadro 2. Conceitos básicos das 5 maneiras de armazenamento de dados na plataforma Android A dúvida que pode surgir é saber qual das soluções você deve usar no aplicativo, considerando que cada solução vai de acordo com suas necessidades específicas; a decisão de como os dados precisam ser tratados, de forma privada ou pública (disponíveis aos outros usuários e aplicativos); e a quantidade de espaço necessário para o armazenamento desses dados. No armazenamento interno, os arquivos são salvos diretamente no armaze- namento do dispositivo e, por padrão, privados do aplicativo, não sendo possível acessá-los por outros. Já quando o aplicativo for deletado do dispositivo, os arquivos também serão. Em armazenamento no banco de dados SQLite, que é totalmente compa- tível com a plataforma Android, os arquivos também costumam ser salvos de maneira privada no aplicativo. Trata-se de um tipo de banco muito poderoso e, ao mesmo tempo, simples de ser manipulado em plataformas móveis, sendo a principal forma de persistência para aplicativos Android. 7Persistência de dados em dispositivos móveis O SQLite possui características muito interessantes, como ser autocontido, não precisar de servidor, nem de configuração e ser baseado em transações. Ele é autocontido/autônomo, pois requer o mínimo do sistema operacional ou da biblioteca externa, sendo integrado ao aplicativo que acessa o banco de dados, permitindo que ele leia e escreva diretamente nos arquivos armazenados no banco do disco. Por ele não precisar de um servidor, não é necessário fazer instalação alguma para usá-lo. Ele ainda se baseia em transações totalmente compatíveis com o ACID, garantindo que elas sejam atômicas, consistentes, isoladas e duráveis. Quanto ao armazenamento em nuvem ou servidores externos, geralmente para aplicativos mobile, utiliza-se as API construídas por meio do conceito de Representational State Transfer (RESTFul), uma forma de construção de WebService mais leve do que o conceito Simple Object Access Protocol (SOAP). Há várias vantagens ou facilidades em utilizar API, em vez de fazer conexões diretas com os bancos de dados, entre elas, a segurança é a principal, sobretudo nesse tipo de armazenamento, pois não se recomenda acessar diretamente o banco de dados de forma externa. Para isso, tem-se as API, as quais fazem a intermediação entre o aplicativo e o servidor de banco de dados, sem a necessidade de usar consultas SQL, de modo direto, no aplicativo. O uso de API facilita a não exposição do banco de dados a terceiros e possíveis interceptações dos dados, sendo que toda a lógica de negócio fica dentro dela, auxiliando na manutenção das informações. Sua outra vantagem é que o banco de dados fica totalmente isolado e, se for necessário trocá-lo, tudo fica transparente, sem impacto para sua aplicação. Aprenda como implementar as cinco formas de armazenamento de dados da plata- forma Android no link a seguir. https://qrgo.page.link/eRyVX Persistência de dados em dispositivos móveis8 Principais comandos SQL Os comandos SQL abordados aqui serão os utilizadosno banco de dados SQLite, que é uma das ferramentas mais usadas para armazenamento de dados em aplicativos móveis. Alguns conceitos iniciais O SQLite possui versões para os principais Windows e Linux, mas, neste caso, será abordada sua instalação no Linux. Antes de iniciar essa instalação, é bom que você conheça alguns dos principais tipos de dados. � INTEGER: são valores inteiros armazenados em 1, 2, 3, 4, 6 ou 8 bytes, dependendo da grandeza do valor (1, 2, 3, 4, ...). � REAL: são valores com ponto flutuante armazenados em 8 bytes (1.5, 1.67, …). � TEXT: são valores string usando Unicode Transformation Format (UTF) -8, UTF-16BE ou UTF-16LE (“Instalação e principais conceitos”). � NULL/NOTNULL: indica se o campo pode ou não ficar vazio. � BLOB: armazena um blob, como o próprio nome indica. � Boolean: não existe uma classe booleana, pode-se considerar os inteiros 0 ( false) e 1 (true). Não existem tipos de dados específicos para o armazenamento de data e/ ou hora, porém, há funções que tratam TEXT, REAL ou INTEGER como data e hora. As cinco principais funções são: � date(timestring, modifier, modifier, ...) retorna a data no formato YYYY-MM-DD; � time(timestring, modifier, modifier, ...) retorna a hora no formato HH:MM:SS; � datetime(timestring, modifier, modifier, ...) retorna data e hora no for- mato YYYY-MM-DD HH:MM:SS; � julianday(timestring, modifier, modifier, ...) retorna o dia conforme o calendário juliano; � strftime(format, timestring, modifier, modifier, ...) retorna a data de acordo com o formato especificado no primeiro argumento. 9Persistência de dados em dispositivos móveis No SQLite, ainda existem alguns comandos simples de auxílio sobre as informações do banco de dados criado, que são geralmente executados quando se utiliza a linha de comando para manipulação desse banco. Todos esses comandos iniciam com um ponto (.) antes da palavra, conforme você pode ver a seguir: � .help — serve para pedir ajuda, como o próprio nome indica; � .exitt — sai do ambiente do banco e retorna ao usuário normal no terminal; � .schema — serve para ver o último comando usado; � .header on — serve para visualizar o nome das colunas; � .mode column — serve para exibir os dados na forma de coluna; � .table — serve para visualizar as tabelas no banco. O comando “SELECT date('now');” calcula da data corrente. Já o comando “SELECT date('now', '+1 days');” calcula a data corrente mais um dia. Por fim, o comando “SELECT date('now', 'start of month');” calcula o primeiro dia do mês corrente. Instalação do SQLite3 Para iniciar a instalação, basta abrir um terminal do Linux e executar os seguintes comandos: sudo apt install sqllite3 sudo apt install sqlite3 libsqlite3-dev sudo add-apt-repository ppa:linuxgndu/sqlitebrowser sudo apt install sqlitebrowser Você já realizou a instalação do sqllite3. Agora, para iniciar a mani- pulação do banco, abra novamente o terminal do Linux e digite ‘sqlite3’ (apenas um ‘l’). No console, abrirá uma linha de comando que permitirá manipular esse banco, conforme pode ser observado na Figura 3. Persistência de dados em dispositivos móveis10 Figura 3. Linha de comando inicial após executar o comando ‘sqlite3’. Após fazer a instalação, usa-se a linha de comando do sqlite3 para trabalhar com algumas das principais estruturas utilizadas no SQL. É im- portante se atentar ao uso do ponto e vírgula (;) ao final de cada comando no shell de comando do banco, porque, caso seja inserido um comando sem o ponto e vírgula e, em seguida, pressionado o botão enter, o interpretador não executará o comando e ficará aguardando por esse ponto — portanto, não esqueça de utilizá-lo no final de cada comando. Comandos principais Os principais comandos da instalação são: � SQLITE3 — cria o banco; � CREATE TABLE — cria a tabela; � INSERT INTO — insere os registros; � SELECT — consulta os registros; � ALTER TABLE — altera a tabela; � UPDATE — atualiza os registros de uma tabela; � DELETE — apaga os registros de uma tabela; � DROP TABLE — apaga uma tabela. Para ajudar no entendimento do uso destas estruturas, será criado um exemplo de banco, fazendo algumas manipulações nos registros e passando por cada estrutura. Antes de iniciar a manipulação desse banco, você deve criá-lo fora do shell do sqlite3. � Se você estiver exatamente como a Figura 3, digite na linha de comando .exit. � Você voltará para a linha de comando do seu usuário local. 11Persistência de dados em dispositivos móveis � Agora crie seu banco, que, neste caso, se chama BancoExemplo.db. O símbolo de $ serve apenas para mostrar que você está executando os comandos na linha de comando do seu usuário local, não o coloque quando escrever os comandos. Para gerar o banco, use o comando a seguir: $ sqlite3 BancoExemplo.db; Ao realizar o comando de criação do banco, este será criado, e você redi- recionado para dentro do shell do sqlite para iniciar sua manipulação. Depois, crie a primeira tabela, chamada de TabelaExemplo. Ela terá um identificador do tipo inteiro, que será sua chave primária (primary key), um campo para armazenar um nome do tipo texto e um campo idade do tipo inteiro: sqlite> CREATE TABLE TabelaExemplo(id int primary key, nome text, idade int); Já para verificar as tabelas que você possui em seu banco, utilize o comando .table. sqlite> .table TabelaExemplo Após criar a tabela, insira um registro para iniciar a manipulação. Atente- -se à ordem em que os registros serão inseridos, pois devem sempre seguir a ordem da tabela. Neste caso, o primeiro valor é o identificador; o segundo, o nome; e o terceiro, a idade. sqlite> INSERT INTO TabelaExemplo (id, nome, idade) values (1, “Maria”, 35); Contudo, nem todos os valores precisam ser inseridos, sendo obrigatório, neste caso, apenas o id, pois ele é a chave primária da tabela e, portanto, NOT NULL. Já os demais, por não terem sido especificados NOT NULL na criação da tabela, são criados por padrão como NULL, assim, o campo da tabela aceita que o valor fique vazio na inserção. Para inserir mais de um registro ao mesmo tempo, basta você colocar uma vírgula (,) depois dos parênteses e fazer uma nova query: Persistência de dados em dispositivos móveis12 sqlite> INSERT INTO TabelaExemplo (id, nome, idade) values (1, “Maria”, 35), (2, “João”, 45); Após realizar as inserções, você pode consultar os registros já inseridos: sqlite> SELECT * from TabelaExemplo; 1|Maria|35 2|João|45 Se você quiser melhorar a exibição dos registros da tabela, ative o cabeçalho e a exibição por coluna por meio dos comandos: “.header on” e “.mode column”. Feito isso, a exibição ficará da seguinte forma: sqlite> SELECT * from TabelaExemplo; id nome idade ---------- ---------- ---------- 1 Maria 35 2 João 45 O select possui algumas variações que auxiliam muito. Existe a cláusula where que atua como o limitador e serve como uma espécie de filtro do que está sendo consultado, você pode verificar dois exemplos da sua utilização a seguir, uma para filtrar pelo id e outra pelo nome: sqlite> SELECT * from TabelaExemplo WHERE id = 2; id nome idade ---------- ---------- ---------- 2 João 45 sqlite> SELECT * from TabelaExemplo WHERE nome like “J%”; id nome idade ---------- ---------- ---------- 2 João 45 Conforme pode ser observado, utiliza-se a cláusula like logo após o where, o que significa que se deseja como saída todos os nomes que iniciam com a letra “J”. O símbolo de porcentagem (%) serve para mostrar que o restante depois dessa letra pode ser qualquer coisa. Assim, os nomes que começarem com a letra “J” serão apresentados no resultado de saída da consulta. Isso serve para 13Persistência de dados em dispositivos móveis números desde que eles estejam dentro de um campo de texto. Neste exemplo, o único campotexto é o nome, os outros são inteiros, mas, se tivesse números dentro do campo nome, você poderia usar o like e buscar pelos números: sqlite> SELECT * from TabelaExemplo WHERE nome like “5648”; Existe também a possibilidade de ordenar a saída por ordem alfabética e, para isso, utiliza-se a cláusula order by, seguida do campo que deseja ordenar. Para a ordem decrescente, basta acrescentar desc ao final: sqlite> SELECT * from TabelaExemplo order by idade; id nome idade ---------- ---------- ---------- 1 Maria 35 2 João 45 sqlite> SELECT * from TabelaExemplo order by idade desc; id nome idade ---------- ---------- ---------- 2 João 45 1 Maria 35 A próxima estrutura que se pode utilizar é o alter table, responsável por alterar as informações da tabela. Com esse comando, altera-se o nome da tabela e as colunas, adicionando novas colunas, por exemplo. sqlite> ALTER TABLE TabelaExemplo rename to TabelaExemploRenomeada; sqlite> ALTER TABLE TabelaExemploRenomeada add endereco text; A cláusula rename to é utilizada para alterar o nome da tabela, já a cláusula add serve para inserir novas colunas à tabela. Não se esqueça de informar o tipo do campo ao adicionar uma coluna, neste exemplo, o campo é do tipo texto. Depois de adicionar um registro na tabela, é possível alterá-lo e, para isso, usa-se a estrutura update. Da mesma forma que se apresentou no select, o update precisa da cláusula where e não falhará se este não for utilizado, mas é extremamente perigoso não o fazer. Se houver uma tabela com milhares de registros e você executar um update sem where, sem especificar qual registro exatamente quer alterar, pode-se mudar todos os registros da tabela. Portanto, Persistência de dados em dispositivos móveis14 tome muito cuidado quando não for utilizar o where juntamente ao update e tenha certeza de sua decisão. A seguir, veja um exemplo da utilização do update: sqlite> UPDATE TabelaExemploRenomeada set nome=”Tania” where id=1; No exemplo anterior, se você não tivesse utilizado where, todos os registros da tabela teriam seus nomes alterados para “Tania”. Há, ainda, a possibilidade de usar a cláusula in no update, que serve para varrer um range específico. sqlite> UPDATE TabelaExemploRenomeada set idade=20 where id in (1,2); Você também pode excluir um registro da tabela, com a estrutura delete. Da mesma forma que o update, sempre se atente ao uso da cláusula where, podendo utilizar a cláusula in, se for necessário. sqlite> DELETE FROM TabelaExemploRenomeada where id = 1; sqlite> DELETE FROM TabelaExemploRenomeada where id in (1,2); Para finalizar as estruturas, pode-se utilizar o comando drop table, responsável por deletar a tabela inteira do banco de dados. Porém, ele deve ser utilizado com atenção, pois você pode perder todos os registros de uma tabela importante. sqlite> DROP TABLE TabelaExemploRenomeada; Neste capítulo, foram elencados os principais comandos do SQLite, usando a linha de comando do Linux. O exemplo de banco de dados apresentado serve para você praticar esses comandos, considerando que, com a prática, o conhecimento será mais bem absorvido. Saiba mais sobre o uso das funções de data e hora no SQLite no link a seguir. https://qrgo.page.link/yfyYb 15Persistência de dados em dispositivos móveis ANDROID Developers. [S. l.: S. n.], 2019. Disponível em: https://developer.android.com. Acesso em: 21 jun. 2019. GOODRICH, M. T.; TAMASSIA, R. Introdução à segurança de computadores. Porto Alegre: Bookman, 2013. 568 p. JANSSEN, D.; JANSSEN, C. What is Data Security? Techopedia, [S. l.], 2013. Disponível em: http://www.techopedia.com/definition/26464/data-security. Acesso em: 21 jun. 2019. ORACLE CORPORATION. Transaction Management: Introduction to Transactions. In: ORACLE CORPORATION. Database Concepts. Redwood Shores: Oracle, 2019. p. 9. Disponível em: https://docs.oracle.com/cd/B19306_01/server.102/b14220/transact. htm#i1666. Acesso em: 21 jun. 2019. Leituras recomendadas CROCKFORD, D. Introdução ao JSON. San José: [S. n.], 2018. Disponível em: http://www. json.org/json-pt.html. Acesso em: 21 jun. 2019. DEITEL, P.; DEITEL, H.; WALD, A. Aplicativo Address Book. In: DEITEL, P.; DEITEL, H.; WALD, A. Android 6 para programadores: uma abordagem baseada em aplicativos. 3. ed. Porto Alegre: Bookman, 2016. cap. 9. SQLite: a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. The SQLite Consortium, [S. l.], 2019. Disponível em: https://www.sqlite.org/index.html. Acesso em: 21 jun. 2019. 13 - Criando Banco de dados com SQLite - Ionic 4 & Angular. [S. l.: S. n.], 2018. 1 vídeo (26 min 39 s). Publicado pelo canal Patrick Miranda. Disponível em: https://www.youtube. com/watch?v=GHU7qobOhKk. Acesso em: 21 jun. 2019. Persistência de dados em dispositivos móveis16 DICA DO PROFESSOR O Ionic Storage é um modelo simples de armazenamento de dados no formato de pares de chav e-valor, para aplicativos desenvolvidos em Ionic, tendo suporte para o SQLite. A priorização no uso do SQLite é pelo fato da ocorrência de alguns problemas dependentes do sistema operaciona l (SO), no armazenamento de dados do browser em aplicativos nativos. O que acontece é que e m alguns SOs, quando o dispositivo fica com pouca memória, ele limpa o armazenamento local. Nesta Dica do Professor, você vai ver o Ionic Storage, um tipo de recurso de persistência de dad os disponibilizado pelo Ionic. Aponte a câmera para o código e acesse o link do vídeo ou clique no código para acessar. SAIBA + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professo r: SQLite Neste link, você vai poder visualizar e baixar a última versão do banco SQLite. Veja a seguir. Aponte a câmera para o código e acesse o link do vídeo ou clique no código para acessar. Introdução ao JSON Neste site, você vai entender, de maneira mais detalhada, como funciona a estrutura do formato JSON. Este é um formato texto e completamente independente de linguagem, pois usa convençõ https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/a9c692809d12dadbe777585ab3dcf071 https://www.sqlite.org/index.html es que são familiares às linguagens C e familiares, incluindo C++, C#, Java, JavaScript, Perl, Py thon e muitas outras. Confira. Aponte a câmera para o código e acesse o link do vídeo ou clique no código para acessar. SQLite: o pequeno notável Neste link, você vai ver algumas informações históricas sobre o SQLite, assim como a sua impo rtância no atual mercado de desenvolvimento de aplicativos móveis. Aponte a câmera para o código e acesse o link do vídeo ou clique no código para acessar. Criando banco de dados com SQLite Veja o seguinte vídeo, o qual mostra um exemplo da criação de um modelo de banco de dados S QLite utilizando a versão 4 do Ionic, juntamente com o Angular. Aponte a câmera para o código e acesse o link do vídeo ou clique no código para acessar. http://www.json.org/json-pt.html https://www.devmedia.com.br/sqlite-o-pequeno-notavel/7249 https://www.youtube.com/embed/GHU7qobOhKk