00:00:12
considerando então que a gente já tem
00:00:14
Vamos abrir aqui
00:00:16
ó tela
00:00:19
vi modelo mod Model vi volta um carinha
00:00:24
agora que é o nosso controle tá o nosso
00:00:28
controle gente a vai fazer a mesma coisa
00:00:31
vai vir aqui vai criar um novo diretório
00:00:35
né vai chamar esse diretório de
00:00:37
controles eu chamo de controles que
00:00:40
poderia ter mais banco de dados né mais
00:00:42
tabelas mais
00:00:46
enfim
00:00:48
Então a gente vai vir aqui
00:00:52
agora e vai criar né um novo arquivo e a
00:00:57
gente vai chamar esse arquivo de com
00:01:02
controle
00:01:05
planeta
00:01:07
pd tá ele vai entrar naquela uma lá
00:01:12
de eu pedi podin eu podia pedir aqui
00:01:16
ó faça uma classe crud que use o SQL L
00:01:24
como gerenciador de banco de
00:01:27
dados a gente pode fazer isso se vocês
00:01:29
quiserem ou então e é isso que eu vou
00:01:32
fazer a gente vai fazendo passo a passo
00:01:34
aqui dentro de um modelo que eu já tenho
00:01:36
mas vocês podiam fazer isso daqui ó eu
00:01:38
posso auxiliar vocês ó control i ó então
00:01:43
crie uma
00:01:45
classe que
00:01:50
implemente
00:01:51
um
00:01:57
controlle para
00:02:00
a
00:02:03
tabela
00:02:06
planetas
00:02:09
do banco de dados
00:02:15
SQL Light tá eu só faltou uma classe que
00:02:20
implemente um controle para um controle
00:02:24
é implemente um cru não um controle para
00:02:28
para um crud né Esqueci aqui ó para um
00:02:37
crud de
00:02:40
planetas do banco de
00:02:42
dados skl L infelizmente ele vai generar
00:02:47
aqui né Como diz generating e Opa agora
00:02:51
ele apareceu aqui algumas coisas aqui ó
00:02:53
tá vendo só que eu não consigo ver então
00:02:56
vamos aceitar Depois eu apago ó então
00:02:59
aqui gente ó Isso aqui é um
00:03:01
crud então ó controle eu tenho que obter
00:03:06
o banco de dados eu tenho que abrir o
00:03:08
banco de dados eu tenho que salvar eu
00:03:12
tenho que buscar todos eu tenho que
00:03:17
atualizar um só eu tenho que deletar
00:03:19
perceberam então isso aqui é um crud só
00:03:22
que vocês podem observar que ele tá
00:03:24
dizendo para mim aqui ó que essa
00:03:25
variável Database aqui ó é é uma
00:03:29
variável que que ele não conhece então ó
00:03:32
eu
00:03:33
vou não aceitar mas funciona por
00:03:36
incrível que pareça um negócio muito
00:03:38
legal
00:03:40
eh mas eu vou fazer ele passo a passo
00:03:43
para que a gente entenda e eu vou
00:03:45
dividir em dois momentos a gente vai
00:03:46
criar a tabela e a gente vai verificar
00:03:49
se ela tá ok né
00:03:51
Eh e na sequência a gente vai
00:03:54
implementar as outras funcionalidades do
00:03:57
do nosso crud né alg você CIC meio no no
00:04:01
ar assim P Mas será que ele fez certo né
00:04:03
Mas ele vai fazer então eu vou dar um
00:04:05
cont control a aqui vou deletar tudo ó e
00:04:08
agora eu vou pegar o meu modelo aqui
00:04:10
vamos começar Ó o meu modelo é esse aqui
00:04:12
ó então ó eu vou chamar ela de
00:04:16
classe controle planeta tá então a gente
00:04:20
vai começar uma classe do zero tá aqui ó
00:04:24
então aqui ela já vai fechar Então tá
00:04:27
aqui aí qual que é a nossa primeira
00:04:30
preocupação na criação dessa Classe A
00:04:32
primeira preocupação da classe é
00:04:35
trabalhar com um banco de dados então eu
00:04:39
vou copiar esse cara aqui ó para dentro
00:04:41
do nosso
00:04:43
eh controler então ele já vai ficar aqui
00:04:46
dentro do das aspas e tal e da mesma
00:04:50
forma que deu no anterior Ele tá dizendo
00:04:53
que dat base é Indefinido Então o que
00:04:55
vocês vão fazer ó vocês vão vir aqui
00:04:57
agora e vão procurar lá ó SQL Lite
00:05:01
flutter tá ele vai achar o pacote
00:05:05
chamado
00:05:06
eh
00:05:08
sfl tá então a gente vai pegar esse
00:05:11
pacote daí aqui ó ele tem as explicações
00:05:15
como que ele funciona né Qual é o seu
00:05:17
uso e como é que a gente abre um banco ó
00:05:20
então daqui a pouco eu vou explicar o
00:05:23
aight que tá aparecendo aqui e aqui ó
00:05:26
ele tem aqui os exemplos Então o que eu
00:05:28
quero que vocês entendam gente é que
00:05:30
normalmente a gente não faz a coisa do
00:05:32
zero a gente usa eh exemplos
00:05:37
eh que nos orientam na criação do do do
00:05:42
sistema é o que eu faço aqui é o resumo
00:05:45
Mas vocês podem aqui ó tem um exemplo
00:05:47
aqui ó de utilização bem completo né Não
00:05:50
funciona nada então o exemplo tá aqui só
00:05:53
no ridm mesmo então tem todas as
00:05:55
explicações aqui para você utilizar mas
00:05:57
eu vou tentar explicar para vocês mas
00:05:59
para que eu possa usar esse dito curo eu
00:06:02
preciso instalar ele então a instalação
00:06:05
começa por aqui ó então eu vou copiar
00:06:06
esse cara a gente já fez isso no no
00:06:10
calculadora lembra para fazer a o lance
00:06:12
da expressão e vamos colocar ele lá no
00:06:16
nosso
00:06:18
Pub spec tá bom esse Pub spec Aqui tá
00:06:22
cheio de linha aqui né então a gente eu
00:06:26
vou apagar algumas aqui só para
00:06:31
Nossa ficar um pouquinho mais despoluído
00:06:34
né lembra eu peguei um exemplo Pronto né
00:06:36
então ao pegar um exemplo pronto a gente
00:06:40
passa Ups passa por
00:06:42
essas por essas
00:06:44
eh Ixe agora já fiz besteira aqui pera
00:06:48
aí agora ele tá me avisando que deu
00:06:50
problema aqui né então vamos lá Ctrl Z
00:06:52
cont contrl Z Eu não sei por que ele ele
00:06:56
ele não não seleciona agora ele
00:06:58
selecionou tá tá aqui daí aqui também eu
00:07:02
vou deletar porque isso aqui é
00:07:04
comentário tá não vai fazer diferença
00:07:08
pra gente então vou só para ele ficar
00:07:11
mais limpo aqui pra gente
00:07:14
conseguir
00:07:16
trabalhar aqui também
00:07:19
implementar porque todos esses elementos
00:07:21
são fundamentais pro funcionamento do
00:07:23
flutter né então não dá para deletar o
00:07:26
que não for e aqui daí
00:07:30
ele vem aqui na parte dos asss aqui
00:07:32
embaixo ó is aqui eu não vou não vou me
00:07:34
preocupar tá A gente não vai usar nesse
00:07:37
sistema aí mas aqui ó eu posso tirar
00:07:40
umas linas aqui ó e vou colocar aqui ó
00:07:43
logo aqui dá para dar um enter para
00:07:44
ficar bonitinho Ó daí eu coloco aqui
00:07:46
abaixo de copertino
00:07:49
SF
00:07:52
241 aí eu mando ele fazer
00:07:56
o o pubg aqui ó e ele vai se tudo der
00:08:00
certo aqui né se eu não fiz nenhuma
00:08:02
besteira
00:08:09
aqui pelo jeito eu fiz uma besteira
00:08:17
né deixa eu limpar aqui
00:08:20
o limpar essa linha aqui para ver não
00:08:24
deixa Clear output deixa eu aumentar
00:08:27
aqui ó eu vejo que tá com
00:08:29
Ah vamos aqui pro Pub tá vamos rodar
00:08:33
aqui e ver o que que ele acontece aqui ó
00:08:36
aqueles erros eram coisas do passado
00:08:38
Então o que tudo indica agora ele
00:08:40
funcionou aqui ó então uma vez
00:08:43
funcionando a gente pode
00:08:46
e fechar essa essa parte aqui de baixo e
00:08:51
a gente pode agora fechar aqui o
00:08:54
pubs e importar a biblioteca compatível
00:08:58
com o Database aqui aqui né então vamos
00:09:00
lá no quick Fix ele vai aparecer duas a
00:09:02
gente vai pegar a
00:09:04
sqflite ó ele automaticamente vai
00:09:07
importar a biblioteca e já vai
00:09:08
reconhecer agora
00:09:12
o a nossa classe Database né E a nossa
00:09:17
variável aqui local né no caso a
00:09:19
Instância local né Ela é uma Instância
00:09:22
Private né do banco de dados que vai ser
00:09:25
manipulado que que é manipular um banco
00:09:27
de dados gente vocês já fizeram a
00:09:28
disciplina no banco de dados então vocês
00:09:30
T que criar tabela incluir na tabela
00:09:33
buscar na tabela deletar né alterar um
00:09:37
elemento da tabela Então isso que faz
00:09:39
parte aqui do controle Mas a gente não
00:09:41
pode incluir não pode deletar não pode
00:09:43
alterar não pode verificar o que tem D
00:09:45
se a gente não abrir o banco de dados tá
00:09:49
então é isso que a gente vai fazer
00:09:52
agora então aqui ó o primeiro passo eu
00:09:56
vou copiar aqui ó da eu vou explicando
00:09:57
fica meem mais fácil
00:10:00
eu vou criar o get
00:10:03
n é que fica estanho ch pegar né mas é
00:10:08
pegar o banco de dados então a gente ch
00:10:10
get n então só vou colocar aqui
00:10:15
agora formatar para vocês entenderem
00:10:18
primeiro seguinte todas as operações que
00:10:21
a gente faz com banco de dados elas um
00:10:23
tempo de operação tá se elas um tempo de
00:10:26
operação eu V fazer aqui o exemplo
00:10:30
para vocês verem como é que isso
00:10:33
funciona vou tirar aqui vou tirar aqui ó
00:10:37
tá B perceba que o INB tá dando Pan aqui
00:10:41
por porque ele é o cara que vai iniciar
00:10:44
o banco de dados então eu vou copiar
00:10:46
aqui também só pra gente ir trabalhando
00:10:48
que eu tenho aqui o init BD só para ele
00:10:50
não dar aquele erro para mim explicar
00:10:52
para vocês ou para eu explicar melhor né
00:10:55
Para eu explicar para vocês
00:10:57
[Música]
00:11:00
esses procedimentos O legal é que se
00:11:02
você fizer isso aí para uma um banco
00:11:04
você vai fazer para todos os bancos de
00:11:09
dados que vocês vierem a
00:11:11
utilizar no futuro bom que que acontece
00:11:14
aqui vou apagar esse Future Aqui
00:11:17
também tá consequentemente vou apagar o
00:11:21
ass aqui ó e vou apagar ight aqui tá
00:11:25
beleza já viu que já deu um erro aqui
00:11:29
o seguinte ó aqui em cima parou de dar
00:11:32
erro eu vou ver se eu consigo dar uma
00:11:34
formatada no documento tá ó ficou
00:11:37
bonitinho documento aí então ó get
00:11:39
Database que que é eu vou
00:11:43
inicializar um banco de dados que eu vou
00:11:46
chamar de planetas pon
00:11:49
DB se você tiver várias tabelas você
00:11:54
pode chamar ele do conjunto da obra
00:11:57
então por exemplo assim você vai fazer
00:11:58
um sistema de gerenciamento lá de
00:12:01
disciplinas que eu vi que alguém falou
00:12:03
então você vai criar lá um banco de
00:12:05
dados chamado
00:12:07
planejamento escolar PDB eu não
00:12:11
recomendo que se ponha espaço porque ele
00:12:13
ele é meio Tosco né aqui como a gente tá
00:12:15
trabalhando só com planetas chamei de
00:12:17
planetas Mas eu posso dar um nome mais
00:12:19
sugestivo porque eu posso ter um
00:12:20
conjunto de tabelas Imagina eu tenho uma
00:12:23
tabela que lida com clientes com
00:12:26
fornecedores com vendas né produtos
00:12:29
enfim aí eu não vou chamar o banco de
00:12:31
dados de fornecedores Vou chamar o banco
00:12:33
de dados de sei lá loja eu vou chamar o
00:12:36
banco de dados de controle então aqui
00:12:40
saiu o nome planetas porque a gente só
00:12:44
tá configurando planetas né agora
00:12:46
Observe o seguinte a primeira coisa que
00:12:48
eu tenho que fazer aqui ó é verificar se
00:12:51
o banco de
00:12:54
dados que eu tenho é diferente de n
00:12:59
porque se ele for diferente de nul
00:13:00
significa que ele já existe então ó se
00:13:03
ele for diferente de nul eu retorno já
00:13:05
ao banco de dados aqui ó que ele já
00:13:08
instanci e tá tudo bonitinho mesma coisa
00:13:11
ele tem um carinha aqui porque ele pode
00:13:13
ser nulo então quando ele ele eu põe
00:13:15
interrogação na na no final aqui
00:13:19
né aliás exclamação é porque ele ele
00:13:23
exigiu isso em função da da da sintaxe
00:13:26
aí ó se ele não for nulo
00:13:29
se ele não é nulo significa o
00:13:32
quê que ele existe Agora se ele for nulo
00:13:37
aí a coisa muda um pouquinho de figura
00:13:40
eu tenho que inicializar esse banco de
00:13:43
dados criar mas ele só vai criar uma vez
00:13:45
concorda comigo porque nas outras vezes
00:13:48
ele não vai mais
00:13:49
ser nulo ele não sendo nulo ele entra
00:13:54
nessa linha aqui e retorna O banco de
00:13:55
dados da boa mas vocês vão fazer ele
00:13:58
pela primeira vez eu também vou fazer
00:14:00
pela primeira vez logo eu vou ter que
00:14:02
dar um init BD aqui e retornar o nosso
00:14:05
BD aqui para que ele continu ver é a
00:14:08
mesma linha aqui de cima ó dáa até para
00:14:10
fazer um if mais bonito né mas como diz
00:14:12
o outro foi assim que eu pensei mas se
00:14:15
vocês quiserem fazer uma coisinha mais
00:14:17
estruturada dá para fazer de outra forma
00:14:19
que o nosso if né aqui se if return
00:14:23
senão BD vai inicializar e tal agora
00:14:26
perceba que aqui o in ó tá dando esse
00:14:29
aqui ó exatamente aqui ó no no no join ó
00:14:33
ele vai
00:14:34
dizer bom é que aqui ele tem acho que eu
00:14:37
tenho pera aí deixa eu ver se eu tenho
00:14:40
o o join Aqui para baixo acho que eu não
00:14:44
tenho join é uma
00:14:46
característica
00:14:48
join só tem ess então é coisa da da
00:14:52
nossa string lá mas a gente já resolve
00:14:55
então Ó esse Open Database aqui ó ele tá
00:14:57
dizendo ó que a variável ela é do tipo
00:15:01
Future Database o que que é um
00:15:05
Future é uma coisa que precisa ser
00:15:09
processada Eu já falei acho que isso na
00:15:12
na web de forma assíncrona se ela é de
00:15:14
forma assíncrona ela vai demorar para me
00:15:18
dar o resultado então eu vou ter que
00:15:21
esperar se eu tenho que esperar eu tenho
00:15:24
que a wait né aí o que que a gente tem
00:15:29
fazer a gente tem que pôr aqui na frente
00:15:30
um
00:15:31
await tá beleza aqui já não deu mais
00:15:35
erro né só que não deu erro aqui ó
00:15:40
mas deu um erro aqui no
00:15:43
await por qu para que eu possa usar o
00:15:47
aight dentro do meu do meu sistema
00:15:54
Obrigatoriamente o procedimento ao qual
00:15:57
ele tá vinculado tem que ser
00:16:00
Future é só você vir aqui no quick Fix ó
00:16:02
e adicionar a aqui ó quando você
00:16:05
adicionar o assíncrono aqui ele
00:16:06
automaticamente coloca o Future aqui ó e
00:16:10
automaticamente ele ele passa a
00:16:15
funcionar o join aqui ó vamos ver qual é
00:16:17
o problema do join Ele tá dizendo que
00:16:19
não tem problema dizendo que tem que
00:16:21
criar o mé para que eu
00:16:24
não possa continuar ve o que aconteceu
00:16:28
no momento que eu transformei init BD
00:16:32
num procedimento assíncrono Future
00:16:35
começou a dar erro aqui em cima também ó
00:16:37
por esse cara aqui também vai precisar
00:16:42
descer adicionar um cast que não
00:16:44
funciona direito ou eu colocar aqui um
00:16:49
await ó então Toda vez que você for
00:16:51
fazer uma chamada e essa chamada
00:16:53
Originalmente porque o Database Não fui
00:16:55
eu que fiz tá vindo do nosso pacote esse
00:16:59
cara exige que você faça essa chamada
00:17:02
assíncrona Então eu preciso
00:17:03
Obrigatoriamente dar um tempo para que
00:17:07
ele se oriente lá e me traga o resultado
00:17:09
então de uma forma bem simplista o
00:17:11
procedimento para nesse momento até que
00:17:14
a resposta chegue só que quando eu
00:17:16
coloquei a weit aqui automaticamente eu
00:17:18
tenho que adicionar o assíncrono aqui
00:17:20
ele volta a ser Future lá e a coisa
00:17:23
começa a fluir perceba que ainda agora
00:17:25
tá dando aqui um erro aqui de criar o
00:17:27
banco de dados né
00:17:29
E então esse erro que tá dando de criar
00:17:31
o banco de dados É porque eu não tenho
00:17:33
procedimento então eu vou buscar o
00:17:35
procedimento lá no meu abac ó tá aqui o
00:17:38
Create banco de datos vocês vão rir
00:17:40
agora que eu acho que vocês já fizeram
00:17:42
algo similar lá na disciplina de banco
00:17:45
de dados né Vocês usaram tal do Create
00:17:48
né então a gente vai usar um Create aqui
00:17:50
ó tá quando eu colocar aqui o Create
00:17:54
eh o que que vai acontecer aqui ó eh
00:17:58
depois eu resolvo join lá eu vou criar o
00:18:01
meu banco de dados bom para eu criar um
00:18:03
banco de dados eu preciso do banco de
00:18:05
dados propriamente título e da versão
00:18:08
desse banco de dados isso é exigido por
00:18:12
esse por essa propriedade aqui ó olha lá
00:18:15
ó function Database Intel perceberam
00:18:19
aqui ó a minha função tá aqui ó cria BD
00:18:24
e ela tem Database e Inter Ó lá vamos
00:18:28
Create aqui ó Database e int e ela
00:18:32
também é com interrogação Então ela é
00:18:34
uma Future já coloquei Future aqui para
00:18:36
colocar Olha o que que eu fiz aqui gente
00:18:38
eu coloquei
00:18:40
aqui criar banco de dados né então
00:18:44
quando que ele vai criar banco de dados
00:18:46
quando ele entrar no init BD aqui ó que
00:18:49
eu preciso daí criar condições
00:18:53
né Para que eu
00:18:56
possa trabalhar né é a criação do
00:19:00
planeta DB depois que ele criou aqui ó
00:19:02
ele essa linha vai ser executada ele ele
00:19:05
vai ser diferente de n então ele já vai
00:19:07
voltar então isso aqui Obrigatoriamente
00:19:09
só vai fazer uma vez mas eu tenho que
00:19:12
preparar isso daqui ó aí que eu fiz aqui
00:19:14
ó Create table planetas né agora é uma
00:19:18
tabela e eu tenho o ID que é um
00:19:22
inteiro então a gente vem aqui na nossa
00:19:25
classe aqui ó deixa eu fechar aqui ó na
00:19:27
nossa classe planeta ó
00:19:29
ID nome tamanho distância e apelido lá
00:19:34
no controle eu vou ter ID nome tamanho
00:19:38
distância e
00:19:39
apelido ID agora é um
00:19:42
inteiro vai ser a nossa chave primária
00:19:45
para evitar a duplicação e vai ser do
00:19:47
tipo autoincremento então por isso que
00:19:49
eu não me preocupei aqui no formulário
00:19:51
em colocar ele para ser utilizado porque
00:19:54
ele vai ser tratado internamente pelo
00:19:56
banco de dados
00:19:58
nome Tex note nul se eu coloquei aqui no
00:20:03
banco de dados que ele é note
00:20:04
nul explica o porqu do required aqui
00:20:09
ó e a mesma
00:20:12
coisa tá acontecendo aqui ó para o
00:20:18
eh tamanho vai ser do tipo real né que é
00:20:23
um varia né A nomenclatura em função da
00:20:27
aplicação né no caso aqui eh no banco de
00:20:30
dados ele vai chamar de real mas para
00:20:32
nós lá é um é um double né em outras
00:20:34
linguagens vai ser um float e assim
00:20:36
sucessivamente e ó também ó note nul e
00:20:39
note nul e apelido é um text simples que
00:20:42
pode ser em branco então Ó esse carinha
00:20:45
aqui
00:20:46
ó é 100% compatível com esse carinha
00:20:52
aqui e agora eu fiz a ligação da tabela
00:20:56
com a classe quando eu fiz a quando eu
00:20:58
faço essa ligação da tabela com a classe
00:21:01
eu criei o conceito de persistência o
00:21:04
que eu fizer no momento que eu tô
00:21:06
executando vai ser gerido pela classe e
00:21:08
no momento que eu terminar ele vai est
00:21:11
sendo armazenado ou seja persistido né
00:21:14
garantido que eu acesse ele futuramente
00:21:17
lá no banco de dados então isso a gente
00:21:19
chama de
00:21:20
persistência quando a gente fez esse
00:21:22
carinha aqui ó a persistência ficou aqui
00:21:25
ó esse banco aqui ó Mas você vocês cada
00:21:29
vez que mexiam em alguma coisa aqui
00:21:31
automaticamente vocês perdiam
00:21:34
né esse essa
00:21:36
característica que vocês tinham colocado
00:21:38
a mais porque nós não fizemos nenhuma
00:21:40
rotina aqui de atualizar essa essa
00:21:42
persistência aqui ao passo que aqui a
00:21:45
gente vai fazer automaticamente né então
00:21:48
ó deixa eu só olhar o meu Ábaco aqui ó
00:21:51
por que tá dando aquele erro no join lá
00:21:54
que eu não entendi até agora né ah ó fal
00:21:58
fal o pef aqui ó tá vendo É isso que
00:22:03
falta então quando eu colocar o pf aqui
00:22:05
ó junto lá aqui um pouquinho aqui ó aqui
00:22:09
ó
00:22:10
pef ele vai colocar em azul para mim
00:22:13
ó ele diz assim ó o Packet pef não está
00:22:18
nas suas dependências então o que que eu
00:22:21
faço ó eu dou um quick Fix aqui
00:22:24
ó e a última opção aqui ó adicione PF as
00:22:28
dependências
00:22:29
agora ele vai lá no pub e para de dar o
00:22:32
erro aqui ó e se a gente voltar aqui
00:22:35
agora lá no pub Dev ó pubspec desculpe
00:22:40
vai aparecer
00:22:42
aqui pef
00:22:44
ó então alguns Alguns não todos
00:22:50
e ele sugere para você daí ele
00:22:53
automaticamente fez aqui a a inclusão do
00:22:56
pef e daí parou erro aqui ó agora o
00:22:59
caminho Deb tá dando erro ainda porque
00:23:02
esse caminho Deb por algum motivo aqui
00:23:05
deixa eu ver e
00:23:09
WC sei lá se eu peguei o pf correto
00:23:12
agora mas vamos lá então agora aqui join
00:23:16
caminho BD onde que tá caminho BD aqui
00:23:18
caminho BD un final Y que que é isso
00:23:21
cara é só a gente V ó é um Future string
00:23:24
aqui ó então aqui ó por isso que ele tá
00:23:27
dando esse se a gente vir aqui ó colocar
00:23:30
um await aqui
00:23:32
ó para de dar erro daí você P Professor
00:23:36
como é que eu vou lembrar de tudos esses
00:23:38
negócios aí é complicado né mas sempre
00:23:42
que você tiver dúvida ele disse assim ó
00:23:46
que aqui tá dando um erro daí ele falou
00:23:49
para mim assim ó o argumento Future
00:23:51
string não pode ser associado ao string
00:23:54
Então como que eu trans transformo uma
00:23:57
string Futura numa
00:23:59
string simples né não deixa ela ir pro
00:24:03
Futuro ou se ela espera ela voltar do
00:24:05
Futuro ó Pronto está Opa tá aqui o nosso
00:24:08
await entenderam mais ou menos a lógica
00:24:11
eu passei em cima aqui ó é um string ó
00:24:13
tá vendo agora esse cara aqui ó o get
00:24:16
que é o que foi colocado no caminho
00:24:20
BD ele é um Future string ou seja ela
00:24:26
vai ser processada e vai demorar para
00:24:29
voltar então a gente coloca o await no
00:24:31
momento que eu colocar o await eu espero
00:24:34
o que tá que é que vai que é uma
00:24:37
informação futura você transformar numa
00:24:39
numa informação presente e dessa forma
00:24:42
você elimina o erro aqui ó dessa forma
00:24:45
aqui gente que que aconteceu no meu
00:24:47
sistema aqui
00:24:48
ó eu
00:24:51
tenho condições de verificar se eu tenho
00:24:54
um banco de
00:24:55
dados se eu não tiver o banco de dados
00:24:57
eu vou inar esse banco de dados como é
00:25:00
que a gente inicia um banco de dados a
00:25:02
gente ajusta aqui ó Isso aqui é por ó
00:25:06
esse cara aqui gente é interno de cada
00:25:09
sistema então por exemplo o Android ele
00:25:13
já vem com o sistema SQL L embarcado
00:25:17
junto com o próprio Android e quando ele
00:25:19
faz essa configuração ele disponibiliza
00:25:22
variáveis e que a gente chama de
00:25:24
ambiente essas variáveis de ambiente são
00:25:27
as que que a gente busca com esses
00:25:29
procedimentos aqui ó então o get
00:25:31
Database pef vai buscar essa variável
00:25:33
para dizer ah ah lá no diretório tal
00:25:37
está armazenado o meu banco de dados
00:25:43
eh SQL Lite nesse dispositivo então o
00:25:47
que que eu faço eu pego esse caminho e
00:25:49
dou um join esse join aqui ó
00:25:53
simplesmente pego esse caminho mais o
00:25:55
local do arquivo né o local do arquivo é
00:25:57
string que tá vindo ó no init Deb aqui ó
00:26:02
entende ó Então essa string que tá vindo
00:26:03
aqui é planetas então ele vai pegar o
00:26:07
caminho que só Jesus e quem fez o o
00:26:11
sistema ou instalou o Android sabe mas o
00:26:14
nome que eu sei que é planetas ponto DB
00:26:17
Então é isso que eu fiz aqui ó aí com
00:26:19
esse caminho eu posso abrir o meu banco
00:26:22
de dados e daí no open banco aqui ó ele
00:26:26
tem as opções ó com configuração com on
00:26:30
Create com upgrade ou somente Abrir nós
00:26:34
estamos colocando a opção on Create o
00:26:36
que que é essa opção Create caso ele não
00:26:38
exista eu crio Então é isso que eu fiz
00:26:42
assim como é que eu crio esse cara aqui
00:26:43
ó com esse comão vocês viram que aqui
00:26:47
apareceu
00:26:49
três aplicas aqui né Isso é quando eu
00:26:52
quero colocar uma string com várias
00:26:54
linhas entendeu então eu posso colocar
00:26:56
aquele lance que eu coloquei de aspas
00:26:58
aspas uma do ladinho da outra ou três a
00:27:01
gente coloca desse jeito porque fica
00:27:03
mais bonitinho ó ele fica exatamente na
00:27:06
na configuração que vocês devem ter
00:27:08
visto lá em banco de dados ó Create
00:27:11
table nome dela e daí a lista
00:27:15
de Campos que vão fazer parte dessa
00:27:19
tabela então agora agora não né depois
00:27:22
e a gente vai ter uma tabela chamada
00:27:26
planetas no banco de dados planeta PDB
00:27:30
que é um arquivo que tá gravado lá
00:27:32
dentro não sei se eu fui Claro mas dessa
00:27:35
forma eu já tenho agora a parte
00:27:38
configurada né do meu banco de dados e
00:27:43
se vocês
00:27:46
e rodarem aqui por exemplo aqui na tela
00:27:50
planeta o que a gente faz agora aqui ó é
00:27:53
a mesma coisa ó a gente vem aqui agora e
00:27:55
cria uma variável né essa variável ela
00:27:59
vai
00:28:01
ser do tipo controle planeta né então
00:28:05
aqui ó CRL v a gente vai chamar da mesma
00:28:09
forma de olha exército zer controle
00:28:12
planeta controle planeta e daí aqui ele
00:28:15
tá dando uns erros aqui ó por quê eu
00:28:17
tenho que localizar aqui então vou
00:28:19
importar ali controles como biblioteca e
00:28:22
pode ver que agora ficou tudo azul aqui
00:28:24
ó esse azul ficou por quê Porque ele tá
00:28:27
dizendo que ela pode ser final ó Tá e
00:28:30
agora controle planeta aqui ó não não
00:28:33
como é que se diz não e tá tá tá em com
00:28:37
essa linha marronzinha porque ele não
00:28:39
foi utilizado ainda né que esse é vai
00:28:42
ser o nosso próximo passo Mas vejam bem
00:28:45
o que que eu fiz aqui ó eu tô mostrando
00:28:47
para vocês o que que é o
00:28:49
controle nesse sistema mvc então o
00:28:53
controle é toda a parte de gestão da
00:28:56
informação nos n processos que a gente
00:28:59
vai utilizar os os mais comuns são
00:29:03
exatamente os os procedimentos de
00:29:05
persistência e o que que são esses
00:29:07
procedimentos de persistência é você
00:29:10
pegar uma informação que é volátil né
00:29:13
que ela está na memória do equipamento
00:29:15
ou do computador ou do smartphone enfim
00:29:18
ou de qualquer dispositivo que vocês
00:29:21
imaginarem e transformar ela numa
00:29:23
informação perene que daí que a gente
00:29:26
chama de persistência né então em Inglês
00:29:29
fica mais bonito né we are persist né
00:29:32
então nós persistimos então essa
00:29:35
persistência ela começa primeiro
00:29:38
com buscar o banco de dados aqui né
00:29:42
get Por que que são assíncronos porque
00:29:46
esses procedimentos são futuros eu tenho
00:29:48
que abrir e ou Abrir demanda rodar um
00:29:52
processo esse processo pode não ser
00:29:54
imediato então ela vai ficar rodando até
00:29:57
ela te dar a resposta então a gente
00:29:58
coloca esse weit para que o programa não
00:30:02
siga e porque se ele seguir ele pode vir
00:30:04
com uma informação nula e essa
00:30:06
informação nula não representa a
00:30:07
realidade porque você não deixou ele
00:30:09
trazer Então a gente tem que usar o
00:30:11
aight aqui a mesma coisa aqui ó eu vou
00:30:14
pegar o o pef e eu posso demorar porque
00:30:18
levar então eu preciso esperar e dentro
00:30:21
da
00:30:22
programação A gente buscou são coisas
00:30:26
chatas de fazer mas com um uma
00:30:28
característica né isso aqui
00:30:30
ó só troca o nome aqui do planetas e só
00:30:36
troca o Create pras outras tabelas que
00:30:41
eu vou gerenciar então o que que
00:30:44
acontece se você criar esse cara aqui ó
00:30:46
eh eu não coloquei aqui mas a gente pode
00:30:49
colocar uma característica de deixar
00:30:51
isso daqui é bem estático ele criar uma
00:30:54
única Instância em todo o sistema mas
00:30:56
para nós não vai fazer diferença se
00:30:58
fizesse eu mostraria então a gente cria
00:31:00
isso aqui uma vez só e depois você vai
00:31:02
replicando isso PR programas futuros tá
00:31:06
então em vendo isso agora que que falta
00:31:10
pra gente agora né falta a
00:31:13
gente manipular essa tabela manipular
00:31:16
esse banco de dados gravar informações
00:31:19
deletar informações então agora esse é o
00:31:24
nosso próximo vamos dizer assim passo né
00:31:28
eu vou criar algumas informações e
00:31:31
depois eu vou mostrar essas informações
00:31:33
e por último a gente vai fazer a gestão
00:31:36
dessas informações né então como eu
00:31:38
sempre digo aqui efetivamente você não
00:31:42
observa nada de novo no no sistema né
00:31:46
Porque eu só coloquei aqui mas não tô
00:31:48
utilizando Mas em breve a gente já vai
00:31:51
trabalhar nisso né então mã à obra