"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Lendo dados do servidor Mysql

Lendo dados do servidor Mysql

Publicado em 30/07/2024
Navegar:749

Reading data from Mysql server

importe os pacotes necessários, depois prepare uma struct com o mesmo esquema do exemplo da tabela tb_student no banco de dados, posteriormente esta struct será usada como container para o resultado da consulta tipo de dados.

package main
import "fmt"
import "database/sql"
import _ "github.com/go-sql-driver/mysql"


type student struct {
 id string,
 name string,
 age int,
 grade int,
}

O driver de banco de dados utilizado precisa ser importado usando o sinal _, pois mesmo sendo necessário pelo pacote banco de dados/sql, não interagimos diretamente com o driver.

Em seguida, crie uma função para conectar-se ao banco de dados.

func connect() (*sql.DB, error) {
 db, err := sql.Open("mysql","root:@tcp(127.0.0.1:3306)/db_learn_go")
 if err != nil {
  return nil, err
 }
 return db, nil
}

O esquema de string de conexão para o driver mysql que usamos é bastante exclusivo, root@tcp(127.0.0.1:3306)/db_learn_go abaixo é um esquema de string de conexão que pode ser usado em qualquer lugar do driver MYSQL Driver, se você usar outro mysql, o esquema de conexão pode ser diferente dependendo do driver utilizado.

user:password@tcp(host:port)/dbname
user@tcp(host:port)/dbname

Abaixo está uma explicação da string de conexão usada na função connect().

root@tcp(127.0.0.1:3306)/db_learn_go
// user => root
// password =>
// host => 127.0.0.1 atau localhost
// port => 3306
// dbname => db_learn_go

Depois de criada a função de conectividade com o banco de dados, é hora de praticar o processo de leitura de dados do servidor de banco de dados. Prepare a função
sqlQuery() com o seguinte código.

func sqlQuery() {
 db, err := connect()
 if err != nil {
 fmt.Println(err.Error())
 return
 }
 defer db.Close()
 var age = 27
 rows, err := db.Query("select id, name, grade from tb_student where age = ?
 if err != nil {
 fmt.Println(err.Error())
 return
 }
 defer rows.Close()
 var result []student
 for rows.Next() {
 var each = student{}
 var err = rows.Scan(&each.id, &each.name, &each.grade)
 if err != nil {
 fmt.Println(err.Error())
 return
 }
 result = append(result, each)
 }
 if err = rows.Err(); err != nil {
 fmt.Println(err.Error())
 return
 }
 for _, each := range result {
 fmt.Println(each.name)
 }
}

Cada vez que uma nova conexão for criada, não se esqueça de sempre fechar a instância da conexão. Você pode usar a palavra-chave defer como no código acima, defer
db.Fechar() .
A função db.Query() é usada para executar consultas SQL. O segundo parâmetro da função é variável, portanto pode ser deixado em branco. No código acima, você pode ver que o valor de uma das cláusulas where é um ponto de interrogação (?).

O sinal será então substituído pelo valor do parâmetro após ele (o valor da variável idade). Este tipo de técnica de escrita de consulta é altamente recomendada para evitar injeção de SQL. A função produz uma instância do tipo sql.*Rows , que também precisa ser fechada quando não for mais usada ( defer rows.Close() ). A seguir, um array com o tipo de elemento struct student é preparado com o nome result . Posteriormente, os resultados da consulta serão armazenados na variável. Em seguida, um loop é executado com a referência da condição sendo rows.Next() . Este loop é executado tantas vezes quanto o número total de registros, sequencialmente do primeiro ao final, um por um. O método Scan() de sql.Rows funciona para recuperar o valor do registro que está sendo iterado, para ser armazenado em uma variável de ponteiro. As variáveis ​​utilizadas para armazenar os campos do registro são escritas sequencialmente como parâmetros variáveis, de acordo com os campos selecionados na consulta. Por favor, veja a comparação abaixo para mais detalhes. // consulta
selecione id, nome, nota ...
// Varredura
linhas.Scan(&each.id, &each.nome, &each.grade ...
Os dados do registro obtidos são então anexados à fatia de resultado, por meio da instrução
resultado = anexar(resultado, cada).
OK, agora basta chamar a função sqlQuery() em main e executar o programa.

func main() {
sqlQuery()
}

Sou apenas um escritor de blog comum. Se ainda houver muitas deficiências, por favor, me perdoe.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/sukmarizki04/reading-data-from-mysql-server-2gcp?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3