Um momento
Aula 29
Cursos / Como Criar uma API JSON em Golang - CRUD Simples
Como Criar uma Tabela de MySQL no Golang

Nesta aula aprendemos a executar um comando de MySQL com código de Golang.

Usamos a função db.Exec para realizar a consulta para criar uma tabela. Basta escrever o comando de MySQL em uma string como o argumento.

Para quem não lembra de SQL, o comando tem a seguinte forma:

CREATE TABLE nome_da_tabela (
  ...
  nome_da_coluna TIPO_DA_COLUNA,
  ...
)

Summary

Resumo da Transcrição

Nesta aula, o objetivo é criar uma tabela de livros em Go usando MySQL. A tabela será baseada na estrutura previamente definida do livro, que possui os campos: id, título e autor, com id como um inteiro e os outros como strings.

Criando a Tabela

  1. Estrutura da Tabela:

    • A tabela será chamada livros.
    • Os campos definidos são:
      • id: inteiro, não pode ser nulo (not null), auto-incremento, chave primária.
      • título: string (variável até 50 caracteres), não pode ser nulo.
      • autor: string (variável até 100 caracteres), não pode ser nulo.
  2. Implementação no Código:

    • Usar DB.Exec para executar a consulta SQL que cria a tabela.
    • Usar multiline string para melhor legibilidade no código.
  3. Tratamento de Erros:

    • Após a execução, verificar se ocorreu um erro e registrar uma mensagem de log, interrompendo a execução se necessário.

Considerações

  • Caso a tabela já exista, o código pode retornar um erro. O autor sugere que o usuário pode ajustar o tratamento para ignorar esse erro, se desejar.
  • O código deve ser testado para assegurar que a tabela é criada corretamente e que o tratamento de erro funciona conforme esperado.

A aula termina aqui, com o convite para continuar nas próximas etapas do desenvolvimento.

Video Transcript

Vamos continuar aqui, é hora de criar a tabela de livros. Mas vamos basear a tabela aqui naquela estrutura do livro. Voltando no arquivo main.go, se lembra, type livrestruct, o livro, essa estrutura, tem um id, o título e autor do livro. O id é um inteiro, título e autor, são do tipo string. Eu vou chamar a tabela de livros. E pra cada campo eu vou nomear com leta minúscula da mesma maneira que eu nomeei o Json aqui. Tá? Voltando aqui, para poder criar a tabela na linguagem Go usando o driver de miSQL, nós vamos usar um método chamado exec. O exec vai ser usado para executar um consultor, um query, sem ter que isso para ocupar com valor retornado por linha. Então em vez de query aqui eu vou usar o exec. Se você quiser ler mais sobre o exec, só ir lá na documentação aqui no Firefox, no meu caso. No navegador vou aqui no tipo DB, tem várias funções, a função é essa aqui, exac. Vamos dar uma olhada na assinatura. Primeiro argumento, parâmetro query, mesma coisa do query lá. E o argumento depois disso, o valor de retorno é o quê? Duas coisas, primeiro o result, resultado e segundo o erro. O erro a gente já conhece bem. Result, o que é que é result? Result faz o resumo de uma comando de SQL que foi executada. Volta aqui, dando uma lidle, exec executa um consultor sem retornar em uma linha. Então vamos lá. Em vez de DB.query vamos falar DB.exec na linha 22 aqui no arquivo criatabela.go. Dentro da string a gente vai fazer o comando para poder criar tabela. Então espero que você já tenha conhecimento de banco de idade, esse é o comando base para criar tabela, mas se não souber muito dar uma olhada como exercício. Vamos lá. Então esse comando você pode pôr tudo em uma linha só, em uma só string ou você pode pôr em várias linhas para ficar melhor de visualizar. Vou fazer em várias linhas, para poder fazer isso vai ser o seguinte, eu vou quebrar a linha aqui depois do exec, aí vou dizer create tab aqui para começar o comando, o nome da tabela vai ser livros, então espaço livros, abro 40, não vou fechar aqui, vou tirar isso de fechar e vou fazer o seguinte, vou falar mais para poder concatenar essa string com a outra, na outra linha para poder fechar o comando aqui. Essas strings aqui que eu vou fazer entre essas duas, cada linha da imaginária, que na verdade ele quando vai combinar tudo não vai ter quebra de linha, vai combinar tudo em uma só string, mas para poder visualizar melhor aqui no código eu vou fazer isso. Então create table livros, a primeira coisa que a gente vai fazer é definir aqui os campos. Vamos lá, primeiro vai ter o id, mas depois vai ter o que? Eu vou colocar o auto antes do título, depois vai ter o título, já tem aqui todos os nomes dos campos, agora vamos definir o tipo de dado, tipo desses dados aqui, id vai ser do tipo inteiro, então vou falar a int, que significa inteiro, int. Eu não quero que você que possa ser no, isto é, esse valor tem que estar presente no registro, então vou falar not no, valor requerido, valor requerido, e vai ser auto incremento porque vai ser a primary key, chave principal aqui, primária, então ele vai começar o id 1, depois 2, 3, assim por diante, quando ele criar os dados, né, quando você inserir dados na tabela, o id vai ser incrementado automaticamente. Vou botar a vírgula, vamos para o auto, na próxima linha, auto vai ser do tipo vou botar ver care, é uma string, mas vou botar caractere variado, variable care, aí vou botar, você pode definir quantos caractere você quer, vou botar 50, só de arbitrariamente, 50 caractere pro letro flotou, e eu não quero que esse valor requerido, então vou falar que not no, não pode ser no, vírgula, mesmo que eu corre pro título, vou botar ver que é até de 100 mesmo, mas melhor, mais caractere, então também é requerido, então not no, vírgula, que depois disso vou fazer definição aqui da primary key, primary key, chave primária, abre os parênteses, vai ser o id, id que vai ser minha chave primária, tá bom, então vamos fazer isso para criar tabela, not que o exec vai ter duas coisas, né, então tem o resultado, né, resultado de falar create, vírgula, erro, create, dois pontos igual, agora eu lembrei, dois pontos, certo, vamos checar se não tem erro aqui, if, como é que faz para checar se tem erro, se não tiver erro, o erro não vai estar definido, mas se tiver, então if error create não for new, isto é, se estiver definido para alguma coisa com erro, ah, vou dar um log fatal aqui e vou botar a descrição do erro, erro create ponto error chamado de função 40, ah, tá bom, será que eu importei o log sim, ah, tento também, vou ter que meter, print alien é uma coisa que se o log aqui, não sei se o log fatal sai do programa e se essa parte é executa, eu quero testar isso, vamos lá, go run, vai criar tabela, se não der problema, em ambiti 7 deu problema aqui, erro de sintaxe, em ambiti 7 com o nono 24, em ambiti 7, ah, esqueci do quê, tem dois strings aqui, não está concatenado, precisa do mais, o mais vai concatenar, essa string concatena com essa, com essa, com essa, com essa e com essa aqui e formou só o string no final, ah, calvar, caldar de novo, outro erro, nova linha esperada, esperava que tenha ditado o vírgula ou fecha parêntese, linha 28, coluna 8, linha 28, coluna 8, está certo, então ele quer o quê, que eu ponho o aqui, o que ponho vírgula, não sei, vamos ver, está certo, então tinha que pôr aqui, ah, fmt indefinido porque não importei, linha 33, import, fmt, ele está create declarado não usado, ah, eu não usei, ah, deixa eu ver o que é que tem dentro exitado create, na documentação é um result, result, tem last insert id, então duas coisas, rows affected, vamos fazer o seguinte, vou estar aqui, eu não vou usar o exitado create, vou botar underscore aqui para dizer que eu não vou usar, aqui, certo, porque não deu erro, eu quero fazer o que é que isso deu erro mesmo, para poder ver se ele vai parar aqui ou mesmo, se eu precisar botar return para ele não poder continuar executando ainda que tem erro, se eu dar o world run de novo, deu erro, tabelo livre já existe, saiu com o status 1, está certo, então não deu erro aqui, logo fatal saiu, um detalhe aqui, se você quiser que não dê erro, sei lá, se a tabela já existe, você não se importa de continuar o script e criar mais registro, como a gente vai fazer depois, não precisa fazer o log fatal nesse caso, então vou deixar assim, se você quiser mudar, vem de você, então por essa aula, só aí, até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: