1.安装mysql driver

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

2.初始化sql

use test;
CREATE TABLE `t_test` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.连接数据库代码

package db

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

func Conn() (*sql.DB, error){
	// root:root@tcp(127.0.0.1:3306)/test 说明:
	// 第一个root是用户名
	// 第二个root是密码
	// 127.0.0.1:3306是地址
	// test 是数据库
	conn,err := sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/test")
	return conn, err
}

4.数据库增删改查代码

package db

import (
	"encoding/json"
	"fmt"
)

// 表t_test映射
type Ttest struct {
	Id int64
	Name string
	Password string
}

func err_handler(err error) {
	fmt.Printf("err_handler, error:%s\n", err.Error())
	panic(err.Error())
}

// 增
func Insert()  {
	conn, err := Conn()
	if err == nil {
		exec, err := conn.Exec("INSERT INTO t_test(name,password ) VALUES(?,?)", "小红", "123456")
		if err == nil {
			affected , _ := exec.RowsAffected()
			fmt.Print(affected)
		}

		if(err != nil){
			err_handler(err)
		}
	}
}

// 删
func Delete()  {
	conn, err := Conn()
	if(err != nil){
		err_handler(err)
		return
	}
	exec, err := conn.Exec("delete from t_test where name = ?", "小红")
	if(err != nil){
		err_handler(err)
		return
	}
	affected, err := exec.RowsAffected()
	if(err == nil){
		fmt.Print("删除行数:", affected)
	}

}

// 改
func Update()  {
	conn, err := Conn()
	if(err != nil){
		err_handler(err)
		return
	}

	exec, err := conn.Exec("update t_test set password = ? where name = ?", "11111", "小红")
	if(err == nil){
		affected, _ := exec.RowsAffected()
		fmt.Print("更新:", affected)
	}
}

// 查
func Query()  {
	conn, err := Conn()
	if err == nil {
		query, err := conn.Query("select id Id, name Name,password Password from t_test")
		if err != nil{
			err_handler(err)
			return
		}

		for query.Next(){
			var test Ttest
			err := query.Scan(&test.Id, &test.Name, &test.Password)
			if err != nil {
				err_handler(err)
			}

			test_json, err := json.Marshal(test)
			if(err == nil){
				fmt.Print("\n",string(test_json))
			}
		}
	}
}

5.源码地址(在db文件夹下)

https://github.com/15902124763/go-base

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐