SQLX操作mysql

Go 言語での MySQL ドライバーのインストール

サードパーティのオープンソース mysql ライブラリを使用します。

http://github.com/go-sql-driver/mysql (mysql ドライバー)

http://github.com/jmoiron/sqlx (mysql ドライバーに基づくカプセル化)

次のコマンドラインをそれぞれ実行します。

go get github.com/go-sql-driver/mysql 
go get github.com/jmoiron/sqlx

テスト接続

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
)

var db *sqlx.DB

// 定义一个初始化数据库的函数
func initDB() (err error) {
    
    
	dsn := "root:lihuawei@tcp(127.0.0.1:3306)/haha?charset=utf8mb4&parseTime=True"
	db, err = sqlx.Connect("mysql", dsn)
	if err != nil {
    
    
		fmt.Printf("connect DB faile, err: %v\n", err)
		return
	}
	db.SetMaxOpenConns(100)
	db.SetMaxIdleConns(10)
	return
}

func main() {
    
    
	if err := initDB(); err != nil {
    
    
		fmt.Printf("init db failed,err:%v\n", err)
	}
	defer db.Close()
	fmt.Println("connect to db success!")
}

データベースを操作する

データを挿入する
package main

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
)

var db *sqlx.DB

// 定义一个初始化数据库的函数
func initDB() (err error) {
    
    
	dsn := "root:lihuawei@tcp(127.0.0.1:3306)/haha?charset=utf8mb4&parseTime=True"
	db, err = sqlx.Connect("mysql", dsn)
	if err != nil {
    
    
		fmt.Printf("connect DB faile, err: %v\n", err)
		return
	}
	db.SetMaxOpenConns(100)
	db.SetMaxIdleConns(10)
	return
}

type user struct {
    
    
	ID   int    `db:"id"`
	Name string `db:"name"`
	Age  string `db:"age"`
}

// 插入数据
func insertDemo() {
    
    
	sqlStr := "insert into user(name, age) values (?,?)"
	ret, err := db.Exec(sqlStr, "jack", 23)
	if err != nil {
    
    
		fmt.Printf("insert failed, err: %v\n", err)
		return
	}
	id, err := ret.LastInsertId()
	if err != nil {
    
    
		fmt.Printf("get lastinsert ID failed, err:%v\n", err)
		return
	}
	fmt.Printf("insert success,the id is %v\n", id)
}

func main() {
    
    
	if err := initDB(); err != nil {
    
    
		fmt.Printf("init db failed,err:%v\n", err)
	}
	defer db.Close()
	fmt.Println("connect to db success!")

	insertDemo()
}
データの一部をクエリする
func queryRowDemo() {
    
    
   sqlStr := "select id ,name ,age from user where id=?"
	var u user
	err := db.Get(&u, sqlStr, 1)
	if err != nil {
    
    
		fmt.Printf("get failed,err%v\n", err)
		return
	}
	fmt.Printf("%v\n", u)
}
複数のデータをクエリする
func queryMultiRowDemo() {
    
    
	sqlStr := "select id ,name ,age from user where id>?"
	var users []user
	err := db.Select(&users, sqlStr, 0)
	if err != nil {
    
    
		fmt.Printf("get failed,err:%v\n", err)
		return
	}
	fmt.Printf("%v\n", users)
}
データを更新する
func update() {
    
    
   sqlStr := "update user set age = ? where id =?"
	ret, err := db.Exec(sqlStr, 20, 6)
	if err != nil {
    
    
		fmt.Printf("update failed,err: %v\n", err)
		return
	}
	n, err := ret.RowsAffected()
	if err != nil {
    
    
		fmt.Printf("get RowsAffected failed, err: %v\n", err)
		return
	}
	fmt.Printf("update success, affected rows: %v\n", n)
}
データの一部を削除する

func deleteById() {
    
    
   sqlStr := "delete from user where id =?"
	ret, err := db.Exec(sqlStr, 6)
	if err != nil {
    
    
		fmt.Printf("delete failed,err: %v\n", err)
		return
	}
	n, err := ret.RowsAffected()
	if err != nil {
    
    
		fmt.Printf("get RowsAffected failed, err: %v\n", err)
		return
	}
	fmt.Printf("delete  success, affected rows: %v\n", n)
}

おすすめ

転載: blog.csdn.net/m0_58121644/article/details/128871574