Golang數據庫編程(MySQL)

1、數據庫配置

  • Golang連接數據庫用戶的驅動是go-sql-driver
  • 安裝依賴包
 go get -u github.com/go-sql-driver/mysql

2、數據庫連接

  • 導入驅動包
import _ "github.com/go-sql-driver/mysql"

3、創建數據庫表

CREATE TABLE `product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(16) NOT NULL,
  `price` float NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

INSERT INTO `product` VALUES ('1', 'Rice', '10.11');
INSERT INTO `product` VALUES ('2', 'Water', '3.33');

4、建立連接

db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/golangdemo")

5、查詢記錄

	rows, err := db.Query("SELECT * FROM product")
	var id, name, price string
	for rows.Next() {
		rows.Scan(&id, &name, &price)
		fmt.Println(id, name, price)
	}
	rows.Close()

6、示例

6.1 示例一

package main

import (
	"database/sql"
	"fmt"
)

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

const (
	USERNAME = "root"
	PASSWORD = "123456"
	NETWORK  = "tcp"
	SERVER   = "localhost"
	PORT     = 3306
	DATABASE = "golangdemo"
)

func main() {

	//db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/golangdemo")
	//優雅的寫法
	dsn := fmt.Sprintf("%s:%s@%s(%s:%d)/%s", USERNAME, PASSWORD, NETWORK, SERVER, PORT, DATABASE)
	db, err := sql.Open("mysql", dsn)

	if err != nil {
		fmt.Println(err)
	}

	ret, _ := db.Exec("INSERT INTO product(name,price) values('meat',99.99)")
	insID,_ := ret.LastInsertId()
	fmt.Println(insID)


	rows, err := db.Query("SELECT * FROM product")

	var id, name, price string

	for rows.Next() {
		rows.Scan(&id, &name, &price)
		fmt.Println(id, name, price)

	}
	rows.Close()

}

6.2 示例二

package main

import (
	"database/sql"
	"fmt"
)

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

func main() {

	db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/golangdemo")

	if err != nil {
		fmt.Println(err)
	}

	stmt, _ := db.Prepare("select name,price from product where name =? or price =? ")
	row4,_ := stmt.Query("meat","19.99")

	var id, name string

	for row4.Next() {
		row4.Scan(&id, &name)
		fmt.Println(id, name)

	}
	row4.Close()

}


發佈了42 篇原創文章 · 獲贊 13 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章