go mysql

编程入门 行业动态 更新时间:2024-10-25 04:27:09

go <a href=https://www.elefans.com/category/jswz/34/1771279.html style=mysql"/>

go mysql

标题

// sql.Open 返回二个值:1.数据操作 2.语法正确与否
// db.QueryRow 查找一条数据
// scan 可以返回一个错误信息
// rows.Next() bool类型 查到信息返回true 配合for使用

文章目录

    • 标题
        • // sql.Open 返回二个值:1.数据操作 2.语法正确与否
        • // db.QueryRow 查找一条数据
        • // scan 可以返回一个错误信息
        • // rows.Next() bool类型 查到信息返回true 配合for使用
    • 1.连接数据库 sql.Open()
  • 2.查询单条语句 db.QueryRow()
  • 2.1 查询多条 db.query 他的scan没有关闭连接池功能
  • ----------------------------------------示例代码:
  • 三, 插入,更新,删除 使用的是一个方法 db.Exec()
        • 插入
        • 删除
        • 更改


1.连接数据库 sql.Open()

1.下载

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

2.全部代码

package mainimport ("database/sql""fmt"_ "github/go-sql-driver/mysql"   //导入
)func main() {dsn := "账号:密码@tcp(ip:3306)/库名称"db, err := sql.Open("mysql", dsn)   // 查看dsn语法有没有问题if err != nil {fmt.Println(db, err)return}errs := db.Ping()  //db.Ping()   尝试连接 :成功 errs显示nilfmt.Println(errs)
}
func initdb() (err error) {db, err = sql.Open("mysql", "admin:admin@tcp(43.138.57.471:3306)/test") //给db全局空指针 传连接成功的值errs := db.Ping() return errs
}

2.查询单条语句 db.QueryRow()

type user struct {name stringage  intsex  string
} 
func queryOne(name int) {var u1 user    //结构体对象//第一种写法   1.搜索出来  2.利用scan  !nil 扫描传值 并关闭// data := db.QueryRow("select name,age from feixiang where name = 1")// data.Scan(&u1.name, &u1.age) // &:指针    没有&指针 改不了u1 原始值   改的是临时u1// fmt.Println(u1)//第二种写法   1.搜索出来 直接利用scan赋值 并返回连接池sqlStr := `select name,age,sex from feixiang where name = ?`// &:指针    没有&指针 改不了u1 原始值   改的是临时u1db.QueryRow(sqlStr, name).Scan(&u1.name, &u1.age, &u1.sex) fmt.Printf("u1:%#v", u1)          //加#号  可以打印出来 对象}

2.1 查询多条 db.query 他的scan没有关闭连接池功能


//查询多条 db.query
func queryMore(name int) {sqlStr := `select name,IFNULL(age, 0),IFNULL(sex, 0) from feixiang where name > ?`rows, err := db.Query(sqlStr, name)// 记得用完关闭连接池defer rows.Close()//如果有错 就打印出错误if err != nil {fmt.Println("查询多条 出错:%v", err)return}// rows.Next() 一条 一条 来//循环取值赋值for rows.Next() {var u1 user// scan 赋值err := rows.Scan(&u1.name, &u1.age, &u1.sex)//如果有错 就打印出错误if err != nil {fmt.Println("循环取值报错", err)}fmt.Println(u1)}
}

----------------------------------------示例代码:

package mainimport ("database/sql""fmt"_ "github/go-sql-driver/mysql"
)var db *sql.DBtype user struct {name stringage  intsex  string
}func initDB() (err error) {//连接数据库db, err = sql.Open("mysql", "admin:admin@tcp(43.138.57.XX:3306)/test")//判断语法错误if err != nil {fmt.Println("数据库语法错误")return}// 判断连接成功与否errs := db.Ping()if errs == nil {fmt.Println("连接成功")}return
}// 查询一条数据
func selectOne() {sqlStr := `select * from feixiang`var u1 user//扫描赋值并且关闭db.QueryRow(sqlStr).Scan(&u1.name, &u1.age, &u1.sex)fmt.Println(u1)
}
func selectMore() {sqlStr := `select * from feixiang`var u1 user//扫描赋值并且关闭rows, err := db.Query(sqlStr)defer rows.Close()//如果有错 就打印出错误if err != nil {fmt.Println("查询多条 出错:%v", err)return}for rows.Next() {rows.Scan(&u1.name, &u1.age, &u1.sex)fmt.Println(u1)}
}func main() {initDB()selectMore()selectOne()
}

三, 插入,更新,删除 使用的是一个方法 db.Exec()

1.res.LastInsertId() // 插入使用 插入几条
2.res.RowsAffected() // 更新删除使用 操作影响的行数

插入
func insert (){sqlStr := `insert into feixiang (name,age,sex) values ('1','2','3')`db.exec(sqlStr)
}
删除
func insert (){sqlStr := `delete from feixiang where id = 6`db.exec(sqlStr)
}
更改
func insert (){sqlStr := `update feixiang set name = 1 where id = 10`db.exec(sqlStr)
}

------------- 插入,更新,删除 实例:

func insert() {sqlStr := `insert into feixiang(name,age,sex) values('a','1001','c')`res, err := db.Exec(sqlStr)if err != nil {fmt.Println("插入失败")} else {res, err := res.LastInsertId()fmt.Println(res)fmt.Println(err)}

更多推荐

go mysql

本文发布于:2024-02-11 05:55:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1679502.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!