go连接mysql数据库
db1.go
package utils1
import (
"database/sql"
)
var(
Db *sql.DB
err error
)
func init(){
Db,err = sql.Open("mysql","root:123456@tcp(192.168.58.129:3306)/cabbeenMall")
if err!=nil{
panic(err.Error())
}
}
user.go
创建结构体 执行sql语句
package model
import (
"fmt"
_ "github.com/mysql-master"
"go_codes/day0609_db/utils1"
)
type User struct{
Id int
Username string
Password string
Email string
}
func (user *User) AddUser() error{
sqlStr := "insert into cb_user(username,password,email) values(?,?,?)"
inStmt,err:=utils1.Db.Prepare(sqlStr)
if err!=nil{
fmt.Println("预编译出现异常",err)
}
_,err2 := inStmt.Exec("lwt","123455","243903449@qq.com")// 执行
if err2!=nil{
fmt.Println("执行出现异常",err2)
return err
}
return nil
}
func (user *User) AddUser2() error{
sqlStr := "insert into cb_user(username,password,email) values(?,?,?)"
_,err:= utils1.Db.Exec(sqlStr,"lwt2","123456","243903449@qq.com")
if err!=nil{
fmt.Println("执行出现异常",err)
return err
}
return nil
}
子测试
目的:子测试方法即真正要测试的方法,但这个方法首字母可以不为大写T,在正规TestXxx()测试方法中执行t.Run即可测试该方法。
TestMain测试将优先于所有测试方法之前,且必须调用m.Run放行测试方法。
package test
import (
"fmt"
//_ "github.com/mysql-master"
"go_codes/day0609_db/model"
"testing"
)
func testUser_AddUser(t *testing.T) {
fmt.Println("+")
user := &model.User{}
user.AddUser()// 调用添加用户方法
user.AddUser2()
}
func TestUser(t *testing.T){
t.Run("子测试程序-添加用户",testUser_AddUser)
fmt.Println("TestUser()...")
}
// 在测试函数执行前 初始化操作
func TestMain(m *testing.M){
fmt.Println("TestMain()...")
m.Run() // 必须调用此方法才会执行 子测试方法
}