«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Чтение данных с сервера Mysql

Чтение данных с сервера Mysql

Опубликовано 30 июля 2024 г.
Просматривать:452

Reading data from Mysql server

импортируйте необходимые пакеты, затем подготовьте структуру с той же схемой, что и в примере таблицы tb_student в базе данных, в дальнейшем эта структура будет использоваться как контейнер для результата запроса тип данных.

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,
}

Используемый драйвер базы данных необходимо импортировать с использованием знака _, поскольку, хотя он и необходим пакету базы данных/sql, мы не взаимодействуем с драйвером напрямую.

Далее создайте функцию для подключения к базе данных.

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
}

Схема строки подключения для драйвера MySQL, которую мы используем, совершенно уникальна: root@tcp(127.0.0.1:3306)/db_learn_go ниже представляет собой схему строки подключения, которую можно использовать на ходу, драйвер драйвера MYSQL, если вы используете другой mysql, схема подключения может отличаться в зависимости от используемого драйвера.

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

Ниже приведено объяснение строки подключения, используемой в функции 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

После того, как функция подключения к базе данных создана, пришло время попрактиковаться в процессе чтения данных с сервера базы данных. Подготовьте функцию
sqlQuery() со следующим кодом.

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)
 }
}

Каждый раз, когда создается новое соединение, не забывайте всегда закрывать экземпляр соединения. Вы можете использовать ключевое слово defer, как в приведенном выше коде: defer
db.Close() .
Функция db.Query() используется для выполнения SQL-запросов. Второй параметр функции является переменным, поэтому его можно оставить пустым. В приведенном выше коде вы можете видеть, что значение одного из предложенийwhere представляет собой вопросительный знак (?).

Знак будет заменен значением в параметре после него (значение переменной age). Настоятельно рекомендуется использовать этот тип метода написания запросов, чтобы предотвратить внедрение sql. Функция создает экземпляр типа sql.*Rows, который также необходимо закрыть, когда он больше не используется (defer rows.Close()). Далее подготавливается массив с типом элемента struct Student с именем result. Позже результаты запроса будут сохранены в переменной. Затем выполняется цикл со ссылкой на условие rows.Next() . Этот цикл выполняется столько раз, сколько всего записей, последовательно от первой записи до конца, одна за другой. Метод Scan() функции sql.Rows извлекает значение повторяемой записи для сохранения в переменной-указателе. Переменные, используемые для хранения полей записи, записываются последовательно как переменные параметры в соответствии с полями, выбранными в запросе. Пожалуйста, посмотрите сравнение ниже для более подробной информации. // запрос
выберите идентификатор, имя, оценку ...
// сканирование
rows.Scan(&each.id, &each.name, &each.grade ...
Полученные данные записи затем добавляются к результирующему срезу с помощью оператора
результат = добавить(результат, каждый).
Хорошо, теперь просто вызовите функцию sqlQuery() в main и запустите программу.

функция main() {
sqlQuery()
}

Я обычный автор блога. Если у вас все еще слишком много недостатков, пожалуйста, простите меня.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/sukmarizki04/reading-data-from-mysql-server-2gcp?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3