Подключение и использование баз данных в GO
НАВИГАЦИЯ ПО СТРАНИЦЕ
В GO существует несколько пакетов, которые облегчают подключение и взаимодействие с базами данных. В данном примере мы рассмотрим работу с базой данных SQLite с использованием пакета github.com/mattn/go-sqlite3. Прежде всего, убедитесь, что пакет установлен:
go get -u github.com/mattn/go-sqlite3
Теперь рассмотрим
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/mattn/go-sqlite3"
)
func main() {
// Подключение к базе данных SQLite
db, err := sql.Open("sqlite3", "example.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Создание таблицы, если её нет
createTable := `
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
email TEXT NOT NULL
);
`
_, err = db.Exec(createTable)
if err != nil {
log.Fatal(err)
}
// Вставка данных
insertData := `
INSERT INTO users (username, email) VALUES (?, ?);
`
_, err = db.Exec(insertData, "john_doe", "john@example.com")
if err != nil {
log.Fatal(err)
}
// Выборка данных
rows, err := db.Query("SELECT * FROM users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// Чтение результатов запроса
for rows.Next() {
var id int
var username, email string
err := rows.Scan(&id, &username, &email)
if err != nil {
log.Fatal(err)
}
fmt.Printf("ID: %d, Username: %s, Email: %s\n", id, username, email)
}
// Проверка наличия ошибок после выполнения запросов
err = rows.Err()
if err != nil {
log.Fatal(err)
}
}
В этом примере:
Мы используем пакет github.com/mattn/go-sqlite3 для работы с SQLite.
Открываем подключение к базе данных с использованием sql.Open.
Создаем таблицу и вставляем данные.
Выполняем запрос на выборку данных.
Читаем результаты запроса и выводим их на экран.
Помните, что для работы с другими базами данных, такими как MySQL, PostgreSQL и др., вам потребуется использовать соответствующие драйверы и пакеты для работы с ними.