数据库(MySql)篇

连接数据库

	db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/DB_TEST")
// 测试连接
db.Ping()
// 使用 defer 释放连接
defer db.Close()
```
## insert 插入数据
```java
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/DB_TEST")
db.Ping()
defer db.Close()

if err != nil {
fmt.Println("数据库连接失败!")
}

_, err := db.Query("INSERT INTO user VALUES(1, 'test')")
if err != nil {
fmt.Println(err.Error())
}

select 查询所有数据

db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/DB_TEST")
db.Ping()
defer db.Close()

if err != nil {
fmt.Println("数据库连接失败!")
log.Fatalln(err)
}

result, err2 := db.Query("SELECT * FROM user")
if err2 != nil {
log.Fatal(err2)
}

for result.Next() {

var id int
var name string

err = result.Scan(&id, &name)

if err != nil {
panic(err)
}

fmt.Printf("Id: %d, Name: %s\n", id, name)
}

where 条件查询

result, err := db.Query("SELECT * FROM user WHERE id = ?", mid)
  • ?是一个占位符,填充了 mid 变量中的值。在后台,db.Query 实际上准备、执行和关闭准备好的语句。

delete 删除

   sql := "DELETE FROM user WHERE id = 1"
res, err := db.Exec(sql)
// 获取删除的行数(收到sql影响的行数)
affectedRows, err := res.RowsAffected()

update 修改数据

   sql := "update user set name = ? WHERE id = ?"
res, err2 := db.Exec(sql, "Yuzhou1su", 2)