Aula 27
Funções do Pacote database/sql da Biblioteca do Golang
Nesta aula apresentamos uma visão geral de como conectar à um banco de dados com o pacote database/sql
.
Lemos a documentacao oficial para entendermos os métodos disponíveis para usar na conexão e consulta ao banco de dados.
Summary
Resumo da Aula sobre Consultas a Banco de Dados com SQL em Go
Na aula de hoje, aprendemos a realizar consultas a bancos de dados usando o pacote database/sql
da linguagem Go, além do driver go-sql-driver/mysql
. Aqui estão os pontos principais abordados:
Pacote e Driver
- Usamos o pacote
database/sql
para interagir com bancos de dados em Go. - O driver escolhido para esse curso é o
go-sql-driver/mysql
, que permite a comunicação com bancos de dados MySQL.
Funções Principais
-
Abrir e Fechar Conexão
- Para abrir uma conexão com o banco de dados, utilizamos a função
Open
, que requer o nome do driver e a string de conexão. - A conexão deve ser fechada com a função
Close
.
- Para abrir uma conexão com o banco de dados, utilizamos a função
-
Consultas
- A função
Query
é usada para executar uma consulta que retorna várias linhas.- Exemplo:
Query("SELECT ...")
- Exemplo:
- A função
QueryRow
é destinada a consultas que precisam retornar apenas uma linha.- Nota: O erro só é retornado ao chamar o método
Scan
, que extrai os valores.
- Nota: O erro só é retornado ao chamar o método
- A função
-
Extração de Dados
- O método
Scan
do tipoRow
permite capturar as colunas de uma linha específica, e aceita um número variável de argumentos. - Utilizamos o método
Next
para iterar sobre os resultados quando se usaQuery
, avançando para a próxima linha.
- O método
-
Manejo de Erros
- Se nenhuma linha for encontrada em
QueryRow
, um erro (sql.ErrNoRows
) será retornado. - Com
Query
, devemos verificar se há mais linhas disponíveis antes de chamarScan
.
- Se nenhuma linha for encontrada em
Encerramento
- É essencial lembrar que toda consulta e retorno de rows requer o fechamento adequado usando métodos
Close
para evitar vazamentos de recursos.
Essa visão geral nos prepara para trabalhar com consultas em bancos de dados em Go nas próximas aulas. Até a próxima!
Video Transcript
Estamos de volta com mais uma aula.
Nessa sessão do curso nós vamos aprender como fazer consulta de banco de dados com o
mais SQL com o Go.
Então para começar aqui a gente vai usar o seguinte pacote da linguagem.
Eu estou aqui no site golong.org.
Se eu clicar em packages, pacotes, eu...
E aqui embaixo para data base, barra SQL.
É o pacote que a gente vai usar.
Ele define várias interfaces com o que a gente vai trabalhar.
Aí tem também o driver.
Se eu abrir o novo aba aqui no github.com, barra Go, traça o SQL, traça o driver,
traça o mais SQL.
Esse é o que a gente vai usar como driver.
E esse driver ele implementa a interface do database SQL.
Então vamos começar de volta aqui a documentação.
Vamos aprender aqui só dar uma olhada nas funções que nós precisamos saber.
Primeiro de tudo, como você tem o banco de dados, você tem que ter uma função para
abrir o banco de dados.
A função vai ser open.
Vamos ver aqui.
O que é a fang?
Fang open retorna.
Fang open para abrir o banco de dados.
Vai levar o nome do driver, no nosso caso, mais SQL.
E o data source nome vai ser a string de conexão.
A gente vai usar, por exemplo, usuário, dois pontos.
Sem, arroba, dereço, barra, nome do banco de dados.
A gente vai ver depois.
E como a gente abre, também temos que fechar.
Então vai ter também a função close.
Acho que eu esqueci de falar.
A função de abrir o banco de dados retorna duas coisas.
Retorna um ponteiro para esse tipo db e um erro.
db é um tipo aqui.
E a gente vai usar para poder fazer nossos consultos.
E desse db também tem a função para poder fechar o banco de dados.
Close, feche o banco de dados e previne novas consultas.
Outra função que vamos usar é o query.
Para fazer consulta em geral.
Query executa uma consulta que retorna as linhas.
Então, olhando aqui na assinatura, chama query,
vai passar a consulta aqui.
Por exemplo, select, as terias que foram livros.
Aí, se você tiver alguma parte da string que você queira interpolar,
é só botar o símbolo de interrogação,
o sinal de interrogação.
E vírgula depois da query, você põe as coisas correspondentes aos sinais de interrogação.
Outra query que a gente vai aprender é query row.
Query row para fazer consulta e você espere que o resultado seja somente uma linha.
Note que o valor retorna é um ponteiro para row, que é a linha.
A mais not that query is a ponteiro para various rows.
Note que query row não retorna erro comparado ao query que é em cima,
porque ele fala que o erro vai ser...
Só vai aparecer quando você chama o scan,
que é o método que a gente vai usar para poder extrair os valores da linha
e pôr dentro de uma estrutura, no nosso caso, estrutura do livro.
E quando você chama no caso do query row, o scan vai dar o erro.
Vou dar o scan aqui.
Então tem vários...
Cadê o funk do...
O que é row? Scan.
Esse seria o caso do query row.
Vamos chamar o scan naquele calo row.
Copie as colunas da linha correspondente que você passa aqui com o argumento.
Se entonar esse ponto, ponto, ponto, interface em vazia,
significa que o número de argumentos é variado.
Então pode ser um argumento, dois, três, esse em pôr diante.
De volta lá no query row, no db.
Então query row de um db.
Eu já falei, a gente espera que retorne no máximo uma linha.
Query row sempre retorna o valor que não é new.
A gente já falei os erros.
Defere pro row scan de doer.
Não aparece erro, só na hora que você chama o scan.
Se não selecionar nenhuma linha, o scan vai retornar.
Erno rows, esse erro aqui que não tem nenhuma linha.
Então vai ser útil a gente saber disso.
No caso de alguém tentar, por exemplo, buscar pro um livro que não existe,
ou tentar escolher um livro que não existe,
a gente tem que estar ligado aqui que quando fazer os scan,
vai retornar esse erro aqui.
Se aparecer linha, o scan vai escanear e a primeira linha que foi selecionada.
E descarta os restos das linhas.
Ok, tá certo.
Vamos ver mais um algum aqui.
A gente já falou do open, vai abrir o banco de dados.
Close pra fechar o banco de dados.
Query pra fazer consulta em geral e query row pra fazer consulta
que espera só um resultado, uma linha.
Não acho que já tá bom pra começar.
Tem também um detalhe aqui só pra terminar.
Quando você fazer o query e retornar rows,
tem também a função de fechar a query consulta.
Note que quando você faz a query e retorna esse ponteiro pra rows,
esse ponteiro pra rows tem também esse método close pra fechar.
Close, fecha as linhas, no caso a estrutura rows.
Previne enumeração logo após.
Ah, esqueci também no next.
Fala aqui de next.
Next é a função que a gente vai usar quando a gente faz a query
pra poder ir pra próxima linha.
Deixa eu ver aqui no next.
Então a gente vai chamar essa função next dentro de um loop,
a estrutura de repetição pra poder ficar rodando e pegar o resultado de cada linha.
Ele vai retornar um boleano, isso é.
Se deu certo pra pegar os valores da próxima linha,
ele vai falar true, ainda tem valor.
Até que bate no false é quando não tem mais linha pra scan em ar.
Então next prepara a próxima linha resultado pra leitura com o método scan.
É torna verdadeiro um sucesso ou false se não tem mais próxima resultado em ar.
Ou se aconteceu um erro preparando.
Tá dizendo que o erro deve ser consultado pra distinguir entre os dois casos.
O caso de não ter mais resultado ou o caso de haver um erro.
Tá bom.
Tá dizendo que cada chamada pro scan tem que preceder com a chamada para o next.
Então chamo next primeiro, scan neia depois.
Tá bom então pra sala só uma olhada aqui na documentação pra ver as funções
que a gente vai utilizar do pacote database.sql da linguagem Google, da biblioteca padrão.
Então por a sala só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: