[Go] sql.DB の Query 関数でプリペアードステートメントを使用する
作成日: 2022年03月07日
database/sql
パッケージの DB
構造体の Query
関数は、第 1 引数に渡した SQL の中でキーワードである ?
を記述し、第 2 引数以降にその値を渡すことで、プリペアードステートメントを使用することができます。
package main
import (
"database/sql"
"fmt"
"github.com/go-sql-driver/mysql"
)
func main() {
mysqlConfig := mysql.NewConfig()
mysqlConfig.User = "dummy_user"
mysqlConfig.Passwd = "dummy_password"
mysqlConfig.Net = "tcp"
mysqlConfig.Addr = "127.0.0.1:32769"
mysqlConfig.DBName = "dummy_database"
db, err := sql.Open("mysql", mysqlConfig.FormatDSN())
if err != nil {
panic(err)
}
defer db.Close()
rows, err := db.Query("select user_name from user where user_id = ?", 1)
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var userName string
err = rows.Scan(&userName)
if err != nil {
panic(err)
}
fmt.Println(userName)
}
}