0
0

Go言語でMYSQLからデータを取得する手順

Last updated at Posted at 2024-05-04

最も簡易的なやり方で、GO言語使用時にMYSQLかららデータを取得する手順はメモしておく

事前準備

・XAMPPをインストールして、ローカル環境でMYSQLを立ち上げ、『User』というテーブルを作成しておく
※カラムは『Name(名前)』『Age(年齢)』『Sex(性別)』『Deleted_flag(削除フラグ)』とかにしておく

・go(バージョンは1.22.2)をインストールしておく

ファイル構成

sampleapp/
 ├ go.mod
 ├ main.go
※go.modは下記コマンドで生成できる

$ go mod init sampleapp(任意の文字列)

実行手順

以下のコマンドを実行して、mysql driverをインストールする
※go.modファイルがないとコマンド実行時にエラーになった

$ go get -u github.com/go-sql-driver/mysql

go: added filippo.io/edwards25519 v1.1.0
go: added github.com/go-sql-driver/mysql v1.8.1

go.modファイルが最終的に以下のようになる

module sampleapp

go 1.22.2

require (
	filippo.io/edwards25519 v1.1.0 // indirect
	github.com/go-sql-driver/mysql v1.8.1 // indirect
)

main.goに以下の記載を行う

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/go-sql-driver/mysql"
)

func main() {
	// MySQL データベースへの接続文字列
	db, err := sql.Open("mysql", "root@tcp(localhost:3306)/gotest")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	// データベースへの接続をテストする
	err = db.Ping()
	if err != nil {
		log.Fatal(err)
	}

	//log.Println("Connected to MySQL database!")

	rows, err := db.Query("SELECT * FROM user")
	defer rows.Close()
	if err != nil {
		panic(err.Error())
	}

	for rows.Next() {
		var Name string
		var Age int
		var Sex int
		var Deleted_flag bool
		if err := rows.Scan(&Name, &Age, &Sex, &Deleted_flag); err != nil {
			panic(err.Error())
		}
		fmt.Println(Name, Age, Sex)
	}
}

※mysqlはrootユーザーで接続しにいっている(PWは設定しない)
PWを設定しているユーザーの場合は、下記の記載方法になる

sql.Open("mysql", "[ユーザー名]:[パスワード]@tcp(localhost:3306)/[データベース名]")
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0