ホームページ  >  記事  >  バックエンド開発  >  Golang mysql操作入門

Golang mysql操作入門

尚
転載
2020-02-26 17:39:253023ブラウズ

Go (Golang とも呼ばれる) は、Google が開発したガベージ コレクション機能を備えた、静的に強く型付けされ、コンパイルされた同時プログラミング言語です。以下、go 入門チュートリアル のコラムから mysql に関する操作をいくつか紹介します。

Golang mysql操作入門

go は mysql データベースを操作します。使用されるライブラリは go-sql-driver/mysql です。直接インストール go get

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

sql.DB

DB タイプで使用できる関数は次のとおりです:

1. Query(c string, args Interface{}…) (*Rows, error)、SELECT ステートメントでよく使用されます

2. Exec(c string, args Interface{}…) (*Rows, error)、一般的に UPDATE および INSERT で使用されます

3. Prepare(c string) (*Stmt, error)、他のステートメントも使用できます。上記のステートメントを実行し、Stmt ポインターを返すために使用できます。

sql.Stmt

Stmt は、データベース ステートメントの操作を実行できる準備済みステートメントです。一般的に使用される関数は次のとおりです:

Exec(args Interface{} …) (Result, error)、パラメータを指定して準備されたステートメントを実行し、ステートメントの合計結果を返します

//...
	stmt, err := db.Perpare("INSERT INTO User(user,pwd) VALUES (?, ?)")
	if err != nil {
		panic(err)
	}
	defer stmt.Close()
	_, err := stmt.Exec("laoli", "123456")
	if err != nil {
		panic(err)
	}
//...
//...
	stmt, err := db.Perpare("DELETE FROM User")
	if err != nil {
		panic(err)
	}
	defer stmt.Close()
	_, err := stmt.Exec()
	if err != nil {
		panic(err)
	}

Query(args Interface{} …) ( *Rows, error) は、パラメータを指定して準備されたステートメントを実行し、行の結果を返します。たとえば、SELECT 操作はこの関数で呼び出す必要があります。

sql.Rows

Rows は SQL ステートメントの実行によって返されるテーブルです。行はキャッシュを占有します。Rows.Next() で false が返された場合、キャッシュは自動的に解放されます。
ソース コードを見てください:

// 源码
func (rs *Rows) Next() bool {
	var doClose, ok bool
	withLock(rs.closemu.RLocker(), func() {
		doClose, ok = rs.nextLocked()
	})
	if doClose {
		rs.Close() //在这里释放掉了
	}
	return ok
}

例:

package main

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

var db *sql.DB
func mian() {
	db = sql.Open("mysql", "root:123456@tcp(127.0.0.1)/test")
	if err := db.Ping(); err != nil {
		panic(err)
	}
}

func Insert() {
	_, err := db.Exec("INSERT INTO User(user, pwd) VALUE (?, ?)", "laowang", "123456")
	if err != nil {
		panic(err)
	}
}

func SelectRow() {
	rows, err := db.Query("SELECT * FROM User WHERE user=?", "laowang")
	if err != nil {
		panic(err)
	}
	//defer rows.Close() //如果后面代码没有循环调用rows.Next(),就需要手动在这里释放一下,不然会一直占用缓存
	var user string
	var pwd string
	for rows.Next() {
		row.Scan(&user, &pwd)
	}
	print(user, pwd)
}

Go 言語の詳細については、php 中国語の go 言語チュートリアル 列に注目してください。 Webサイト。

以上がGolang mysql操作入門の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。