Passando para agradecer pela aula, 45 minutos de boa clareza e domínio no contexto aplicado...aprendi o conceito do padrão 3 camadas melhor que na faculdade!!!vlw =)
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Olá Filipe, estou deixando aqui o meu comentário dizendo um muito obrigado por essa videoaula de programação em camadas, faz um bom tempo que procuro este conteúdo bem explicado e o teu foi o melhor até agora. Quero que continues com esse bom trabalho que tens feito e nós estaremos sempre aqui para dar aquela garra e força que precisares. Abraços
Olha em te agradeço mesmo Filipe, eu nao uso C# uso Vb.net, é difícil achar material na net sobre isso, claro tem o macoratti(a culpa nao é dele é minha), mas voce esta me fazendo entender como desenvolver em camadas, hoje fiz uma inserção no banco de dados com sua aula, ficou massa, muitíssimo obrigado agora vou fazer a segunda. fiz minha primeira regra de negócios kkkkkk , mandei dar um upper() nos membros da classe na BLL para por tudo em maiúsculo antes de gravar o registro ai a classe DAL só se preocupa em gravar os dados, esse é o espírito da coisa correto? acompanho sua aula em C# e escrevo em Vb.net, ta me ajudando muito. muitíssimo obrigado , grande abraço
Parabens, Todas as aulas da 1 a 4 foram execelentes. Obrigado pela disposição, E quando possivel postar mais algumas aulas. Sabe expor o conteudo em liguagem simples de forma muito facil de entender.
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Cara, consegui entender e fazer em 45 minutos vendo o seu vídeo o que não consegui em 23 vídeo aulas COMPRADAS de um tiozinho que não quero falar o nome. O cara só enchia linguiça. Seus tópicos são de fácil assimilação e vão direto ao ponto, sem maiores delongas...de graça! Estou tentando recomeçar no mercado de programação (trabalhei com VB 5), e precisava muito de um conhecimento atualizado sobre plataforma .NET e desenvolvimento em camadas - trabalhava com orientação a eventos. Parabéns pela iniciativa de difundir o conhecimento. Abraço
7 лет назад
Caro André, Muito obrigado por prestigiar meu trabalho. Desculpa a demora, tarda mais não falha. Estou reativando o canal, pois, agora estou finalizando meu mestrado. Teremos vídeos toda semana. Se ainda não se inscrever, ativa aí parceiro. Abraços, Filipe Tório
Prezado Andre, acho que vc devia dizer o nome desse tiozinho. Eu por exemplo, estou gostando desses vídeos e tentando entender um pouco (principalmente para exercitar a mente). Vai que eu entre nessa aí. Puxa. Não é bom pra ninguém e eu lamento vc ter entrado nessa. Sorte que vc acho outros e até me extimulou a ver os vídeos.
To gostando bastante so a camada DAL q achei q n foi muito legal... Na minha opnião vc deveria ter feito ela na aula pq agora pra entender e copiar o q esta la é mais dificil para continuar a aula.... mais vc manda bem...
Achei bem interessante a aula, já tenho vários cursos é já estou acostumado com vídeos, mas acredito para quem como eu não conhece nada de C# seria bom se fosse mostrado de forma mais explicada a classe de acesso ao banco de dados, ou pq não já usar Entity Framework que hoje em dia ORM é mais usado.
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
eu me inscrevi em sua pagina,pois sei que esses materiais irão me ajudar em mais projetos ainda....Mas reparei que vc não posta mais a algum tempo,vc tem um outro canal?A sua didática, rica em detalhes faz uma diferença enorme, essa maneira natural de passar a informação facilita e muito.muito obrigado mesmo.
7 лет назад
Marcelo S, tive que parar por um tempo por conta do mestrado, mas estou de volta com os vídeo. Inscreva-se no canal para receber notificações toda semana.
Bom Dia. Meu nome é Ademilson. Comecei a ver os vídeos e fiquei interessado em aprender um pouco. E depois de várias tentativa consegui a realizar um login com os dados de um banco de dados no SQL. Continuei e criei outro form com poucos campos para ser cadastrado em outra tabela do SQL. Só que aparece uma mensagem de erro que mostra a seguinte mensagem de erro: "Simtaxe incorreta próxima a '*'". Como corrigir esse erro!!!!!!! Obrigado e desculpe-me.
Caraca mandou muito bem cara! Otima aula. Fui dar uma olhada no seu canal e vi que não posta a algum tempo, por que não continua cara? Explica bem demais
7 лет назад+1
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Olá Felipe, estou tentando migrar um projeto legado C#/postgresql que utiliza Functions/StoredProcedure, suas aulas foram ótimas, o modelo em camadas ajudou bastante porem estou com dificuldade pois as inserções apresentam erros nas conversões de tipo DateTime teria alguma de ideia de como solucionar? As consultas funcionam normal problema é a inserção que da erro nos tipos de dados Date..Obrigado.
E aee blz, assistir todas as aulas, mas queria pedir a sua ajuda, eu quero fazer inserção em três tabelas ao mesmo tempo pois as tabelas estão relacionadas, atraves de uma procedure, pode me dizer como faço isso?
Qual a diferença de fazer assim, ou separados? Vi que existe um modelo, que alguns programadores separam em camadas, no seu caso você fez mas porém em pastas! Posso trabalhar assim? Ou o ideal seria dividi em 3 projetos?
boa noite Filipe! sou iniciante em programação estou a programar tal como neste vídeo mais ao inicializar o programa ele manda uma mensagem dizendo que a propriedade connection não esta ser inicializada, gostaria de umas dicas tua pf.
Hallo Filipe acho muito bom dares estas aulas de programação. Gostaria perguntar-te algo: desejo aprender programação. Mas quantos GB deve ter o meu computador para eu poder aprender programação?
EM PRIMEIRO LUGAR, QUERO AQUI AGRADECÊ-LO POR ESTAS VÍDEOS AULAS MARAVILHOSAS E BEM APRESENTADAS, PARA UM LEIGO NO ASSUNTO COMO EU, MAS COM UMA VONTADE LOUCA DE PODER COMPREENDER A LINGUAGEM ESTOU AMANDO COM CERTEZA TUDO ISTO... SÓ DEIXO AQUI UMA RESSALVA SOBRE... O BANCO DE DADOS EU POSSO COPIA-LO PARA ADICIONA-LO NA REPLICA QUE ESTOU CRIANDO PARA APRENDER..? ONDE EU ENCONTRO...?
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Muito bom. Na inclusão no banco de dados, poderia criar uma classe tipo clsIncluir e no botao Incluir chamar essa classe? pq nesse exemplo tem somente 2 campos, mas se tivesse mais ai ficaria tudo dentro do evento do botao incluir...só uma questao de deixar mais claro a codificacao.
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Bom dia! primeiramente Obrigado por compartilhar seus conhecimento. quando eu tento inserir os dados, o meu ExecuteNonQuery() gera um erro de que não esta reconhecendo o Objeto 'cliente' tem ideia do que possa ser ? Obrigado. Estou usando o visual studio 2012 e sqlserver2012. SqlCommand comando = new SqlCommand(comandosql, conn); comando.ExecuteNonQuery(); conn.Close();
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Filipe, primeiramente parabéns pela sua iniciativa. Excelente seu mateira, muito clara, suas explicações. Aproveitando do seu conhecimento, gostaria de saber no caso de relacionamentos entre as entidades do banco de dados, como seria o procedimento. Exemplo: tenho um bd cadastroproduto onde tenho as entidades produto(id, nomeproduto, idcategoriaproduto) e categoriaproduto (id, nomecategoriaproduto). No formulario de cadastro de produto eu teria: txtNome, cbxcategoria. Não sei se consegui me explicar, mas como ficaria o DTO para esse exemplo?
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
você vai fazer outro vídeo explicando mais a fundo sobre a class DAL??
10 лет назад+1
Olá Ademar, obrigado pela pergunta. Estou planejando gravar outras aulas de POO com três camadas em ASP.net e vou abordar um pouco mais sobre a camada DAL.
Amigão, antes de tudo, obrigado pela excelente aula. Estou tendo que aprender MVC em C# e disponho de pouco tempo... e vc ajudou muito... no entanto, vendo outros videos, vi modelos de MVC, Desktop, onde cada camada é um project, e não uma pasta como no seu exemplo. Vc vê alguma vantagem ou desvantagem em uma das maneiras de programar? Obrigado novamente.
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Boa tarde, obrigado pleo conteudo tirou muitas duvidas e esta sendo otimo para o meu aprendizado. Mas o botão incluir ao ser pressionado, da um erro que vai para a classe "AcessoBancoDados "que aponta para o o "comando.ExecuteNoQuery()" A MENSAGEM DIZ : MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''Bruno,brunocarvalhoviana@outlook.com)' at line 1' Pode me ajudar? preciso muito aprender essa materia e esta sendo complicado. Obrigado
Ótimas explicações em todas as aulas. Me ajudou bastante. Parabéns Filipe! Se eu quisesse adicionar um campo foto no form, como eu poderia incluir o atributo foto no ClienteDTO para que essa imagem seja mostrada no PictureBox? Assim como foi definido que: dto.Nome = txtNome.Text; dto.Email = txtEmail.Text; Como eu definiria o "dto.Foto = ???"? Obrigado pela atenção.
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Boa noite felipe ta dando erro em lugar aqui e nao to conseguind resolve ta no public void Executar comandoSQL da erro nessa linha comando.ExecuteNonQuery(); segue o squinte erro Sytem.InvalidOperationException ocurred in mysql.data.dll
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Felipe Tório, precisamos de um comando desses mas com variáveis passadas por parametros. EX: "INSERT INTO clientes (nome, email) VALUES ('" @nome "', '" @email"')"; command.Parameters.Add(new SqlParameter("@nome", dto.Nome)); command.Parameters.Add(new SqlParameter("@email", dto.Email)); Sei que essa é a forma para evitar SQL Injection, porém sou um aprendiz, estou tentando aprender da melhor forma possível, nos dê uma aula sobre esse assunto, estou na Austrália querendo aprender a programar em Visual Studio, atualmente só sei PHP.
Boa tarde ! meu visual studio não mostrar a extensão MySqlData, como faço para pegar essa extensão, preciso baixar mais alguma coisa? Grato pela atenção!
Felipe Tório, precisamos de um comando desses mas com variáveis passadas por parametros. EX: "INSERT INTO clientes (nome, email) VALUES ('" @nome "', '" @email"')"; command.Parameters.Add(new SqlParameter("@nome", dto.Nome)); command.Parameters.Add(new SqlParameter("@email", dto.Email)); Sei que essa é a forma para evitar SQL Injection, porém sou um aprendiz, estou tentando aprender da melhor forma possível, nos dê uma aula sobre esse assunto, estou na Austrália querendo aprender a programar em Visual Studio, atualmente só sei PHP.
7 лет назад
Davi Soares obrigado pela mensagem e pela sugestão de aula. Em breve falarei sobre a construção adequada de comandos SQL para evitar ataques por injeção. Teremos dois vídeos por semana. Inscreva-se no canal e ative a notificação. Um grande abraço.
Já me inscrevi, gostaria se possível me mostrasse uma soluçao para eu usar essa forma de passar como parâmetro nesse código que você nos ensinou na aula, eu tentei algumas formas mas continua dando erro na execuçao. Obrigado. davi.silvainfo@gmail.com Se puder ajudar nesse passo seria mueito importante.
Cara isso que tava pocando muitos alunos! Nós sempre ouvimos dizer do tal PROJETO 3 CAMADAS, mas na prática isso meio que se torna 4 camadas porque: Eu tava tendo dificuldade, pois é impossível passar o objeto BLL para DAL sem essa camada DTO... Nesse caso eu falo quando você divide o projeto em dll, estava ficando doido já até encontrar seu vide-o! Tendo essa camada DTO agora consigo fazer a referência dela tanto a camada BLL quanto para DAL. Nossa mano obrigado salvou minha vida! Me diz uma coisa, onde devo deixar a validações dos textbox? Na classe BLL ou no próprio form? Pois temos que retornar as informações sempre para o UI, se eu fizer uma validação nas propriedades de qualquer forma terei que fazer elas no formulário. Caso contrário, se eu precisar forcar um controle ou colorir o mesmo, terei que fazer outra validação dentro do form novamente. Então isso me geraria uma duplicação de código certo? Como resolvo isso? Deixo as validações dentro dos forms mesmo, ou sou obrigado a validar as entidades retornar para o form e depois validar de novo caso queira focar no controle? Obrigado, abraço!
@@eu_thiagomoura Então mano, eu fiquei sabendo que a validação de entradas de dados não podem ser dentro da classes DLL. Pelo que entendi, você deve fazer isso em uma cama UI mesmo. Um dica que poderia ser bacana, seria criar uma classe na camada UI só para validações do UserForm, tipo; UsuarioValidation por exemplo. Dessa forma evitaria ter muito código dentro do próprio useform, amenizando o acoplamento né! Mas não tenho certeza disso ainda, uma coisa legal que descobrir é que podemos usar o melhor do POO para isso. Tipo um datagridviw, o ideal é montar ele em código, evitar de fazer tudo manual. Pois se precisar de apagar o controle, você não perde códigos. Pra isso eu usei a herança, o que ajuda muito!
@@welissonnery Essa do DataGridView foi bem interessante, vou da uma pesquisada sobre. Valeu pela dica, criando uma classe de validação e instanciando ela na view, me parece que vai ficar bem limpo o projeto, e legível também. Show de bola mano.
Pelo que vi, você criou apenas um projeto e separou cada camada em pastas. Não seria melhor gerar três projetos, cada um representando uma camada, pois caso eu precise efetuar manutenção em apenas uma camada, eu compilaria apenas essa camada, ganhando tempo em compilação em grandes projetos? Por favor, é apenas uma ideia, se eu estiver enganado me corrija?
Boa noite, Felipe! Parabéns pelo vídeo, tem ajudado bastante! Tenho uma dúvida, e se ao invés de criar minhas DTOs e BLLs "Independentes", eu criar as BLLs herdando os atributos das DTOs? Existe alguma "Boa Prática" que não me permite fazer assim? Desde já, muito obrigado!
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Boa tarde, tenho que agradecer-lhe por esta óptima demonstração, tenho um pequeno problema: quando executo o start até a digitação dos dados dcorre tudo normal, após clicar em incluir, aparece então um erro: "An unhandled exception of type 'System.Exception' occurred in Projeto3Camadas.exe Additional information: Unable to connect to any of the specified MySQL hosts.", este erro aparece em: public void Conectar() { if (conn != null) conn.Close(); string connStr = String.Format("server=(0); user id=(1); password=(2); database=(3); pooling=false", server, user, password, database); try { conn = new MySqlConnection(connStr); conn.Open(); } catch (MySqlException ex) { --> throw new Exception(ex.Message); } } Já efectuei várias configurações no MySql, nomeadamente colocando o ficheiro do projecto no directório www, mas fica sempre por aqui, com o mesmo erro e não transcreve os dados para a tabela.... Como posso solucionar este erro afim de prosseguir o curso.... O meu obrigado....
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Bom video, boa explicação porem me caiu uma duvida. Como programar a seguinte situação: Pessoa, PessoaFisica e PessoaJuridica?
10 лет назад
Herança resolve essa situação, tanto para as classes BLL e DTO. Colocamos tudo que é comum a Pessoa Física e Jurídica na classe Pessoa que pode ser inclusive abstrata. As classes PessoaFisica e PessoaJurica herdam da classe Pessoa.
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Olá Felipe Bom Dia! estou seguindo rigidamente as suas explicações e fiz o formulário, etc. o que não estou conseguindo entender é sobre a pasta que você tem pronta com acesso a banco de dados e somente conectou. no meu caso teria que criar também essa pasta mas não estou entendendo como isso será feito. Fiz inclusive a tabela como disse...mas não estou entendo como essa tabela vai aparecer no DAL. Bem....qualquer coisa se puder orientar agradeço... Parabéns pelo seu trabalho! e-mail: portalautomatec@gmail.com
Amigo, qual o benefício em programar sem o uso de controles BindSources como você está fazendo, ou seja, criar tudo na "unha" mesmo?
9 лет назад+2
Marcos Soares O benefício é ter maior controle da solução. Mas também não dispenso o uso de alguns RAD code, pois de toda forma, diversas tecnologias estão cada vez mais tendendo para isso, principalmente tecnologias Microsoft com tantos frameworks disponíveis. Mas o criar na "unha" é porque as vídeo-aulas são destinadas aos meus alunos que estão aprendendo a programar, se mostrar tudo isso com uso de BindSources fica muito encapsulado e eles não absorvem o conhecimento esperado.
Muito obrigado. É porque eu ouço muitos falarem que o uso de componentes vinculados pode tornar uma aplicação um pouco lenta se comparado com o método que você está utilizando. Isso é verdade ou mito? Eu também estou iniciando em C# e gostei muito da forma que você faz.
9 лет назад+1
Depende porque isso evolui bastante, mas de modo geral, o framework tem que checar e gerenciar uma série de coisas antes de processar os pedidos e pode ficar mais lento sim, no entanto, nada que inviabilize soluções de requisitos não muito críticos no que diz respeito à performance.
Filipe Tório Valeu amigo. Eu programo em Delphi e, supondo que você o conheça, saberá então o quanto é "bagunçado" trabalhar com aquela quantidade de componentes de acesso a dados poluindo a sua interface. Sem mencionar o quanto fica lento e o quanto grande fica o executável gerado na compilação. Mas, valeu pelo conhecimento compartilhado. Desejo-lhe sucesso em sua caminhada. Obrigado.
Felipe, ótimas aulas, estão me ajudado muito, apenas uma dúvida. Esse trecho que código abaixo, esta dando erro de conversão no objeto dr, você poderia me ajudar com esse problema? public SqlDataAdapter RetornaDataReader(string sql) { SqlCommand objCmd = new SqlCommand(sql, conn); SqlDataReader dr = objCmd.ExecuteReader(); dr.Read(); return dr; } Agradeço desde já Abraços e parabéns pela a qualidade das aulas!
Ola Felipe, depois de muito procurar como aprender C# e começar a programar encontrei os seus videos. Estou gostando bastante dos são bem explicados e dinâmicos porem to com a versão do VS 2015 e fico perdido não consigo identificar os comandos que vc usa assim como onde ta Form 1e onde criar as pastas DTO,DLL e BLL etc.. teria como me ajudar..? obrigado leonardo.engelke@hotmail.com
8 лет назад
+Leonardo Engelke para criar as pastas referentes as camadas, basta adicioná-la clicando com o botão da direita sobre o nome do projeto e acessar a opção Add Folder
7 лет назад
Leonardo Engelke valeu amigo. Inscreva aí que estou reformulando o canal.
7 лет назад
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Que Série top! Obrigado Filipe, por compartilhar conteúdo tão profissional com a gente. Melhor material disponivel sobre camadas!
Caro apresentador, o seu trabalho é coisa mesmo de profissional. Obrigado.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Bela explicação.... nunca na faculdade algum professor explicou dessa maneira
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Muito bem explicado, gostei,até que enfim consegui entender a lógica.
Tem muita facilidade de ensinar. Excelente didática. Parabéns.
Muito útil. Estou ajudando uma pessoa a entender projetos em camadas, e achei suas aluas bem didáticas. Obrigado.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Aula top, a didática do professor e excelente!
Passando para agradecer pela aula, 45 minutos de boa clareza e domínio no contexto aplicado...aprendi o conceito do padrão 3 camadas melhor que na faculdade!!!vlw =)
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Massa demais vou aprender agora passar ela entre biblioteca de classes
Bem explicado ! Parabéns, continue publicando e ajudando as pessoas que buscam conhecimento em C#. Excelente vídeo.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Vídeo aula TOP🎉
Quanta clareza e logica na explicação, foi das melhores que já pude assistir
Olá Filipe, estou deixando aqui o meu comentário dizendo um muito obrigado por essa videoaula de programação em camadas, faz um bom tempo que procuro este conteúdo bem explicado e o teu foi o melhor até agora. Quero que continues com esse bom trabalho que tens feito e nós estaremos sempre aqui para dar aquela garra e força que precisares. Abraços
pq vc não utilizou parameters? concatenando string com a query abre porta para sql injection
Didática muito boa e uma ótima aula. Parabéns.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Parabéns muito boa a sua explicação tenha certeza que você ta ajudando muitas pessoas assim como eu !!!
joia amigo muito bom este vídeo muito explicado sobre 3 camadas
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Acabou o canal ??? curso tá completo ?? muito legal programação em camadas
Olha em te agradeço mesmo Filipe, eu nao uso C# uso Vb.net, é difícil achar material na net sobre isso, claro tem o macoratti(a culpa nao é dele é minha), mas voce esta me fazendo entender como desenvolver em camadas, hoje fiz uma inserção no banco de dados com sua aula, ficou massa, muitíssimo obrigado agora vou fazer a segunda. fiz minha primeira regra de negócios kkkkkk , mandei dar um upper() nos membros da classe na BLL para por tudo em maiúsculo antes de gravar o registro ai a classe DAL só se preocupa em gravar os dados, esse é o espírito da coisa correto?
acompanho sua aula em C# e escrevo em Vb.net, ta me ajudando muito.
muitíssimo obrigado , grande abraço
Excelenteeeeeeeee aula
Parabens,
Todas as aulas da 1 a 4 foram execelentes.
Obrigado pela disposição,
E quando possivel postar mais algumas aulas. Sabe expor o conteudo em liguagem simples de forma muito facil de entender.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Obrigado pela aula bem explicada
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Video muito bem criado e direto.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Você é o cara.! Parabéns pelas aulas.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Cara, consegui entender e fazer em 45 minutos vendo o seu vídeo o que não consegui em 23 vídeo aulas COMPRADAS de um tiozinho que não quero falar o nome. O cara só enchia linguiça. Seus tópicos são de fácil assimilação e vão direto ao ponto, sem maiores delongas...de graça! Estou tentando recomeçar no mercado de programação (trabalhei com VB 5), e precisava muito de um conhecimento atualizado sobre plataforma .NET e desenvolvimento em camadas - trabalhava com orientação a eventos.
Parabéns pela iniciativa de difundir o conhecimento. Abraço
Caro André,
Muito obrigado por prestigiar meu trabalho. Desculpa a demora, tarda mais não falha. Estou reativando o canal, pois, agora estou finalizando meu mestrado. Teremos vídeos toda semana. Se ainda não se inscrever, ativa aí parceiro.
Abraços,
Filipe Tório
Prezado Andre, acho que vc devia dizer o nome desse tiozinho. Eu por exemplo, estou gostando desses vídeos e tentando entender um pouco (principalmente para exercitar a mente). Vai que eu entre nessa aí. Puxa. Não é bom pra ninguém e eu lamento vc ter entrado nessa.
Sorte que vc acho outros e até me extimulou a ver os vídeos.
To gostando bastante so a camada DAL q achei q n foi muito legal... Na minha opnião vc deveria ter feito ela na aula pq agora pra entender e copiar o q esta la é mais dificil para continuar a aula.... mais vc manda bem...
Muito boa sua vídeo aula.
Achei bem interessante a aula, já tenho vários cursos é já estou acostumado com vídeos, mas acredito para quem como eu não conhece nada de C# seria bom se fosse mostrado de forma mais explicada a classe de acesso ao banco de dados, ou pq não já usar Entity Framework que hoje em dia ORM é mais usado.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Aula top parabéns ganhou mais um inscrito e toma meu like
Canal reativado, teremos vídeos toda semana. Inscreva-se.
eu me inscrevi em sua pagina,pois sei que esses materiais irão me ajudar em mais projetos ainda....Mas reparei que vc não posta mais a algum tempo,vc tem um outro canal?A sua didática, rica em detalhes faz uma diferença enorme, essa maneira natural de passar a informação facilita e muito.muito obrigado mesmo.
Marcelo S, tive que parar por um tempo por conta do mestrado, mas estou de volta com os vídeo. Inscreva-se no canal para receber notificações toda semana.
Parabéns pela aula! Muito bem explico!
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Bom Dia. Meu nome é Ademilson. Comecei a ver os vídeos e fiquei interessado em aprender um pouco. E depois de várias tentativa consegui a realizar um login com os dados de um banco de dados no SQL. Continuei e criei outro form com poucos campos para ser cadastrado em outra tabela do SQL. Só que aparece uma mensagem de erro que mostra a seguinte mensagem de erro: "Simtaxe incorreta próxima a '*'".
Como corrigir esse erro!!!!!!! Obrigado e desculpe-me.
Eu já crio as camadas no modelo MVC model veiw control
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Excelente!!
Caraca mandou muito bem cara! Otima aula. Fui dar uma olhada no seu canal e vi que não posta a algum tempo, por que não continua cara? Explica bem demais
Canal reativado, teremos vídeos toda semana. Inscreva-se.
entendi muita coisa agora, valeu!
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Ótima explicação, obrigado!
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Ficou du carai suas aulas fessô!! Valeu.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Filipe, show de bola! Obrigado por disponibilizar esse material.
Por gentileza, se puder me esclarecer uma dúvida...por que separar BLL da DTO?
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Olá Felipe, estou tentando migrar um projeto legado C#/postgresql que utiliza Functions/StoredProcedure, suas aulas foram ótimas, o modelo em camadas ajudou bastante porem estou com dificuldade pois as inserções apresentam erros nas conversões de tipo DateTime teria alguma de ideia de como solucionar? As consultas funcionam normal problema é a inserção que da erro nos tipos de dados Date..Obrigado.
E aee blz, assistir todas as aulas, mas queria pedir a sua ajuda, eu quero fazer inserção em três tabelas ao mesmo tempo pois as tabelas estão relacionadas,
atraves de uma procedure, pode me dizer como faço isso?
Qual a diferença de fazer assim, ou separados? Vi que existe um modelo, que alguns programadores separam em camadas, no seu caso você fez mas porém em pastas! Posso trabalhar assim? Ou o ideal seria dividi em 3 projetos?
Top!
boa noite Filipe! sou iniciante em programação estou a programar tal como neste vídeo mais ao inicializar o programa ele manda uma mensagem dizendo que a propriedade connection não esta ser inicializada, gostaria de umas dicas tua pf.
Hallo Filipe acho muito bom dares estas aulas de programação.
Gostaria perguntar-te algo: desejo aprender programação. Mas quantos GB deve ter o meu computador para eu poder aprender programação?
EM PRIMEIRO LUGAR, QUERO AQUI AGRADECÊ-LO POR ESTAS VÍDEOS AULAS MARAVILHOSAS E BEM APRESENTADAS, PARA UM LEIGO NO ASSUNTO COMO EU, MAS COM UMA VONTADE LOUCA DE PODER COMPREENDER A LINGUAGEM ESTOU AMANDO COM CERTEZA TUDO ISTO... SÓ DEIXO AQUI UMA RESSALVA SOBRE... O BANCO DE DADOS EU POSSO COPIA-LO PARA ADICIONA-LO NA REPLICA QUE ESTOU CRIANDO PARA APRENDER..? ONDE EU ENCONTRO...?
Canal reativado, teremos vídeos toda semana. Inscreva-se.
É uma pena o canal com um excelente conteúdo estar inativo...
Brasil, o pais que um video de funk tem 1milhao de view e um video foda desse a galera nao ta nem ai.... dura realidade!
Valeu Filipe!
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Muito bom. Na inclusão no banco de dados, poderia criar uma classe tipo clsIncluir e no botao Incluir chamar essa classe? pq nesse exemplo tem somente 2 campos, mas se tivesse mais ai ficaria tudo dentro do evento do botao incluir...só uma questao de deixar mais claro a codificacao.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Filipe Tório, preciso falar contigo.
Bom dia! primeiramente Obrigado por compartilhar seus conhecimento.
quando eu tento inserir os dados, o meu ExecuteNonQuery() gera um erro de que não esta reconhecendo o Objeto 'cliente' tem ideia do que possa ser ? Obrigado.
Estou usando o visual studio 2012 e sqlserver2012.
SqlCommand comando = new SqlCommand(comandosql, conn);
comando.ExecuteNonQuery();
conn.Close();
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Muito Bom!!!!
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Filipe, primeiramente parabéns pela sua iniciativa. Excelente seu mateira, muito clara, suas explicações. Aproveitando do seu conhecimento, gostaria de saber no caso de relacionamentos entre as entidades do banco de dados, como seria o procedimento. Exemplo: tenho um bd cadastroproduto onde tenho as entidades produto(id, nomeproduto, idcategoriaproduto) e categoriaproduto (id, nomecategoriaproduto). No formulario de cadastro de produto eu teria: txtNome, cbxcategoria. Não sei se consegui me explicar, mas como ficaria o DTO para esse exemplo?
Canal reativado, teremos vídeos toda semana. Inscreva-se.
O único que consegui entender de verdade rsrs
Deveria ter mostrado a pasta de banco de dados, tô esperando até hoje
Cara merece mil likes que pena só posso ativa um.
você vai fazer outro vídeo explicando mais a fundo sobre a class DAL??
Olá Ademar, obrigado pela pergunta. Estou planejando gravar outras aulas de POO com três camadas em ASP.net e vou abordar um pouco mais sobre a camada DAL.
que ótimo, aguardando ansioso e obg pela a atenção que você ta dando aos iniciantes !!!
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Amigão, antes de tudo, obrigado pela excelente aula. Estou tendo que aprender MVC em C# e disponho de pouco tempo... e vc ajudou muito... no entanto, vendo outros videos, vi modelos de MVC, Desktop, onde cada camada é um project, e não uma pasta como no seu exemplo. Vc vê alguma vantagem ou desvantagem em uma das maneiras de programar? Obrigado novamente.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Boa tarde, obrigado pleo conteudo tirou muitas duvidas e esta sendo otimo para o meu aprendizado.
Mas o botão incluir ao ser pressionado, da um erro que vai para a classe "AcessoBancoDados "que aponta para o o "comando.ExecuteNoQuery()" A MENSAGEM DIZ :
MySql.Data.MySqlClient.MySqlException: 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''Bruno,brunocarvalhoviana@outlook.com)' at line 1'
Pode me ajudar? preciso muito aprender essa materia e esta sendo complicado.
Obrigado
Professor, grava outras aulas de POO com três camadas em ASP.net?
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Ótimas explicações em todas as aulas. Me ajudou bastante. Parabéns Filipe!
Se eu quisesse adicionar um campo foto no form, como eu poderia incluir o atributo foto no ClienteDTO para que essa imagem seja mostrada no PictureBox?
Assim como foi definido que:
dto.Nome = txtNome.Text;
dto.Email = txtEmail.Text;
Como eu definiria o "dto.Foto = ???"?
Obrigado pela atenção.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Boa noite felipe ta dando erro em lugar aqui e nao to conseguind resolve ta no public void Executar comandoSQL da erro nessa linha comando.ExecuteNonQuery();
segue o squinte erro Sytem.InvalidOperationException ocurred in mysql.data.dll
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Felipe Tório, precisamos de um comando desses mas com variáveis passadas por parametros.
EX:
"INSERT INTO clientes (nome, email) VALUES ('" @nome "', '" @email"')";
command.Parameters.Add(new SqlParameter("@nome", dto.Nome));
command.Parameters.Add(new SqlParameter("@email", dto.Email));
Sei que essa é a forma para evitar SQL Injection, porém sou um aprendiz, estou tentando aprender da melhor forma possível, nos dê uma aula sobre esse assunto, estou na Austrália querendo aprender a programar em Visual Studio, atualmente só sei PHP.
Boa tarde ! meu visual studio não mostrar a extensão MySqlData, como faço para pegar essa extensão, preciso baixar mais alguma coisa? Grato pela atenção!
ops!! Conseguir resolver depois de ter baixado um mysql-connector-net-6.10.6.msi!
+Antonilson Fonseca beleza? Você precisa baixar o MySQL Conector for Visual Studio.
show
Felipe Tório, precisamos de um comando desses mas com variáveis passadas por parametros.
EX:
"INSERT INTO clientes (nome, email) VALUES ('" @nome "', '" @email"')";
command.Parameters.Add(new SqlParameter("@nome", dto.Nome));
command.Parameters.Add(new SqlParameter("@email", dto.Email));
Sei que essa é a forma para evitar SQL Injection, porém sou um aprendiz, estou tentando aprender da melhor forma possível, nos dê uma aula sobre esse assunto, estou na Austrália querendo aprender a programar em Visual Studio, atualmente só sei PHP.
Davi Soares obrigado pela mensagem e pela sugestão de aula. Em breve falarei sobre a construção adequada de comandos SQL para evitar ataques por injeção. Teremos dois vídeos por semana. Inscreva-se no canal e ative a notificação. Um grande abraço.
Já me inscrevi, gostaria se possível me mostrasse uma soluçao para eu usar essa forma de passar como parâmetro nesse código que você nos ensinou na aula, eu tentei algumas formas mas continua dando erro na execuçao. Obrigado.
davi.silvainfo@gmail.com
Se puder ajudar nesse passo seria mueito importante.
Eu resolvo dessa forma:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Data;
using MySql.Data.MySqlClient;
namespace Projeto3Camadas.Layers.DAL
{
class ParametroSQL
{
private String nome;
private object valor;
public string Nome { get => nome; set => nome = value; }
public object Valor { get => valor; set => valor = value; }
}
class Database
{
private MySqlConnection conn;
private DataTable data;
private MySqlDataAdapter da;
private String server = "localhost";
private String user = "root";
private String password = "123";
private String database = "teste";
public Database()
{
Conectar();
}
~Database()
{
Desconectar();
}
public void Conectar()
{
string connStr = String.Format("server={0}; user id={1}; password={2}; database={3}; pooling=false", server, user, password, database);
try
{
Desconectar();
conn = new MySqlConnection(connStr);
conn.Open();
}
catch (MySqlException ex)
{
throw new Exception(ex.Message);
}
}
public void Desconectar()
{
try
{
if (conn != null)
conn.Close();
}
catch (MySqlException ex)
{
throw new Exception(ex.Message);
}
}
public void ExecutarSQLSemRetorno(string sql, List parametros = null)
{
MySqlCommand comando = new MySqlCommand(sql, conn);
if (parametros != null)
{
for (int i = 0; i < parametros.Count; i++)
{
if (parametros[i] != null)
{
comando.Parameters.AddWithValue(parametros[i].Nome, parametros[i].Valor);
}
}
}
comando.ExecuteNonQuery();
conn.Close();
}
public DataTable ExecutarSQLRetornandoDataTable(string sql, List parametros = null)
{
MySqlCommand comando = new MySqlCommand(sql, conn);
if (parametros != null)
{
for (int i = 0; i < parametros.Count; i++)
{
if (parametros[i] != null)
{
comando.Parameters.AddWithValue(parametros[i].Nome, parametros[i].Valor);
}
}
}
data = new DataTable();
da = new MySqlDataAdapter(comando);
da.Fill(data);
return data;
}
public MySqlDataReader ExecutarSQLRetornandoDataReader(string sql, List parametros = null)
{
MySqlCommand comando = new MySqlCommand(sql, conn);
if (parametros != null)
{
for (int i = 0; i < parametros.Count; i++)
{
if (parametros[i] != null)
{
comando.Parameters.AddWithValue(parametros[i].Nome, parametros[i].Valor);
}
}
}
MySqlDataReader dr = comando.ExecuteReader();
dr.Read();
return dr;
}
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
class ClienteBLL
{
Database database = new Database();
public void Inserir(ClienteDTO dto)
{
List list = new List();
ParametroSQL parametroSQLId = new ParametroSQL();
parametroSQLId.Nome = "@ID";
parametroSQLId.Valor = dto.Id;
list.Add(parametroSQLId);
ParametroSQL parametroSQLNome = new ParametroSQL();
parametroSQLNome.Nome = "@NOME";
parametroSQLNome.Valor = dto.Nome;
list.Add(parametroSQLNome);
ParametroSQL parametroSQLEmail = new ParametroSQL();
parametroSQLEmail.Nome = "@EMAIL";
parametroSQLEmail.Valor = dto.Email;
list.Add(parametroSQLEmail);
string sql = "INSERT INTO LOGIN (ID, NOME, EMAIL) VALUES (@ID, @NOME, @EMAIL);";
database.ExecutarSQLSemRetorno(sql, list);
}
}
}
Meio foda!
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Ola, poderia me ajudar estou desenvolvendo para meu TCC e que meu banco de dados seja o Oracle, e estou tendo dificuldades.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Cara isso que tava pocando muitos alunos!
Nós sempre ouvimos dizer do tal PROJETO 3 CAMADAS, mas na prática isso meio que se torna 4 camadas porque: Eu tava tendo dificuldade, pois é impossível passar o objeto BLL para DAL sem essa camada DTO... Nesse caso eu falo quando você divide o projeto em dll, estava ficando doido já até encontrar seu vide-o!
Tendo essa camada DTO agora consigo fazer a referência dela tanto a camada BLL quanto para DAL. Nossa mano obrigado salvou minha vida!
Me diz uma coisa, onde devo deixar a validações dos textbox? Na classe BLL ou no próprio form?
Pois temos que retornar as informações sempre para o UI, se eu fizer uma validação nas propriedades de qualquer forma terei que fazer elas no formulário. Caso contrário, se eu precisar forcar um controle ou colorir o mesmo, terei que fazer outra validação dentro do form novamente. Então isso me geraria uma duplicação de código certo?
Como resolvo isso? Deixo as validações dentro dos forms mesmo, ou sou obrigado a validar as entidades retornar para o form e depois validar de novo caso queira focar no controle?
Obrigado, abraço!
Também gostaria de saber, assim que descobrir algo sobre, deixa no comentário pf amigo!
@@eu_thiagomoura Então mano, eu fiquei sabendo que a validação de entradas de dados não podem ser dentro da classes DLL. Pelo que entendi, você deve fazer isso em uma cama UI mesmo. Um dica que poderia ser bacana, seria criar uma classe na camada UI só para validações do UserForm, tipo; UsuarioValidation por exemplo. Dessa forma evitaria ter muito código dentro do próprio useform, amenizando o acoplamento né! Mas não tenho certeza disso ainda, uma coisa legal que descobrir é que podemos usar o melhor do POO para isso. Tipo um datagridviw, o ideal é montar ele em código, evitar de fazer tudo manual. Pois se precisar de apagar o controle, você não perde códigos. Pra isso eu usei a herança, o que ajuda muito!
@@welissonnery Essa do DataGridView foi bem interessante, vou da uma pesquisada sobre. Valeu pela dica, criando uma classe de validação e instanciando ela na view, me parece que vai ficar bem limpo o projeto, e legível também. Show de bola mano.
@@eu_thiagomoura Eu mudei de ideia a quanto o DTO, tô fazendo com 3 camadas mesmo, UI, BLL, DAL as propriedades eu uso direto da camada business.
@@welissonnery cara não seria interessante manter o dto e adicionar mais uma camada para UI?
Show!!!
Pelo que vi, você criou apenas um projeto e separou cada camada em pastas. Não seria melhor gerar três projetos, cada um representando uma camada, pois caso eu precise efetuar manutenção em apenas uma camada, eu compilaria apenas essa camada, ganhando tempo em compilação em grandes projetos? Por favor, é apenas uma ideia, se eu estiver enganado me corrija?
Desculpa mas vc não mostrou a pasta de acesso banco de dados que vc criou.
drive.google.com/open?id=0B5Zf5Vw6gmlqdGdfTGxVT0kxeUk
Boa noite, Felipe!
Parabéns pelo vídeo, tem ajudado bastante!
Tenho uma dúvida, e se ao invés de criar minhas DTOs e BLLs "Independentes", eu criar as BLLs herdando os atributos das DTOs?
Existe alguma "Boa Prática" que não me permite fazer assim?
Desde já, muito obrigado!
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Boa tarde, tenho que agradecer-lhe por esta óptima demonstração, tenho um pequeno problema: quando executo o start até a digitação dos dados dcorre tudo normal, após clicar em incluir, aparece então um erro: "An unhandled exception of type 'System.Exception' occurred in Projeto3Camadas.exe
Additional information: Unable to connect to any of the specified MySQL hosts.", este erro aparece em:
public void Conectar()
{
if (conn != null)
conn.Close();
string connStr = String.Format("server=(0); user id=(1); password=(2); database=(3); pooling=false", server, user, password, database);
try
{
conn = new MySqlConnection(connStr);
conn.Open();
}
catch (MySqlException ex)
{
--> throw new Exception(ex.Message);
}
}
Já efectuei várias configurações no MySql, nomeadamente colocando o ficheiro do projecto no directório www, mas fica sempre por aqui, com o mesmo erro e não transcreve os dados para a tabela.... Como posso solucionar este erro afim de prosseguir o curso.... O meu obrigado....
Canal reativado, teremos vídeos toda semana. Inscreva-se.
9:55 Começa o New Project, para aqueles que querem pular a introdução/história da programação para chegar em orientada a objeto
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Bom video, boa explicação porem me caiu uma duvida.
Como programar a seguinte situação: Pessoa, PessoaFisica e PessoaJuridica?
Herança resolve essa situação, tanto para as classes BLL e DTO. Colocamos tudo que é comum a Pessoa Física e Jurídica na classe Pessoa que pode ser inclusive abstrata. As classes PessoaFisica e PessoaJurica herdam da classe Pessoa.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Muito boa essas explicações :) O visual studio pode acessar banco postgres tb?
Canal reativado, teremos vídeos toda semana. Inscreva-se.
iae parceiro, ótima aula daitenho uma pergunta, posso usar o SQLServer?um abraço
Pode sim, no entanto, a camada de dados DAL precisa ser alterada para usar SqlClient.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Olá Felipe Bom Dia!
estou seguindo rigidamente as suas explicações e fiz o formulário, etc.
o que não estou conseguindo entender é sobre a pasta que você tem pronta com acesso a banco de dados e somente conectou.
no meu caso teria que criar também essa pasta mas não estou entendendo como isso será feito.
Fiz inclusive a tabela como disse...mas não estou entendo como essa tabela vai aparecer no DAL.
Bem....qualquer coisa se puder orientar agradeço...
Parabéns pelo seu trabalho!
e-mail: portalautomatec@gmail.com
parabens Filipe, muito boa sua aula...valeu..
só tem até a 4 aula mesmo ou tem mais?
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Amigo, qual o benefício em programar sem o uso de controles BindSources como você está fazendo, ou seja, criar tudo na "unha" mesmo?
Marcos Soares O benefício é ter maior controle da solução. Mas também não dispenso o uso de alguns RAD code, pois de toda forma, diversas tecnologias estão cada vez mais tendendo para isso, principalmente tecnologias Microsoft com tantos frameworks disponíveis. Mas o criar na "unha" é porque as vídeo-aulas são destinadas aos meus alunos que estão aprendendo a programar, se mostrar tudo isso com uso de BindSources fica muito encapsulado e eles não absorvem o conhecimento esperado.
Muito obrigado. É porque eu ouço muitos falarem que o uso de componentes vinculados pode tornar uma aplicação um pouco lenta se comparado com o método que você está utilizando. Isso é verdade ou mito? Eu também estou iniciando em C# e gostei muito da forma que você faz.
Depende porque isso evolui bastante, mas de modo geral, o framework tem que checar e gerenciar uma série de coisas antes de processar os pedidos e pode ficar mais lento sim, no entanto, nada que inviabilize soluções de requisitos não muito críticos no que diz respeito à performance.
Filipe Tório Valeu amigo. Eu programo em Delphi e, supondo que você o conheça, saberá então o quanto é "bagunçado" trabalhar com aquela quantidade de componentes de acesso a dados poluindo a sua interface. Sem mencionar o quanto fica lento e o quanto grande fica o executável gerado na compilação. Mas, valeu pelo conhecimento compartilhado. Desejo-lhe sucesso em sua caminhada. Obrigado.
Marcos essa App do vídeo e persistente ou não persistente
Oi, vc teria o fonte da classe AcessoBancoDados, estou tentando copiar pelo vídeo, mas tem partes embassadas e não consigo ver
drive.google.com/open?id=0B5Zf5Vw6gmlqdGdfTGxVT0kxeUk
obrigado, na labuta com os códigos aqui, um abraço, valeu mesmo
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Felipe, ótimas aulas, estão me ajudado muito, apenas uma dúvida.
Esse trecho que código abaixo, esta dando erro de conversão no objeto dr, você poderia me ajudar com esse problema?
public SqlDataAdapter RetornaDataReader(string sql)
{
SqlCommand objCmd = new SqlCommand(sql, conn);
SqlDataReader dr = objCmd.ExecuteReader();
dr.Read();
return dr;
}
Agradeço desde já
Abraços e parabéns pela a qualidade das aulas!
Acho que vc não criou esse DataReader Tipo DataReader = new DataReader(dt);
Não tenho certeza mas deve ser isso falta criar o DT= DataReader.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Ola Felipe, depois de muito procurar como aprender C# e começar a programar encontrei os seus videos. Estou gostando bastante dos são bem explicados e dinâmicos porem to com a versão do VS 2015 e fico perdido não consigo identificar os comandos que vc usa assim como onde ta Form 1e onde criar as pastas DTO,DLL e BLL etc.. teria como me ajudar..?
obrigado
leonardo.engelke@hotmail.com
+Leonardo Engelke para criar as pastas referentes as camadas, basta adicioná-la clicando com o botão da direita sobre o nome do projeto e acessar a opção Add Folder
Leonardo Engelke valeu amigo. Inscreva aí que estou reformulando o canal.
Canal reativado, teremos vídeos toda semana. Inscreva-se.
Ninja no paint
Canal reativado, teremos vídeos toda semana. Inscreva-se.