使用go操作数据库实现CRUD简单 ??java看着馋哭了!

【摘要】 golang中强大的类库操作数据库不再需要jdbc那一套,
database/sql中的DB结构体有相应的方法,分别是Exec、Query和QueryRow
Exec( ):

Query( ):

QueryRow( ):

1、sql包的Open函数获取连接
func Init() {
Db, err = sql.Open(“mysql”, “r…

golang中强大的类库操作数据库不再需要jdbc那一套,

database/sql中的DB结构体有相应的方法,分别是ExecQueryQueryRow

Exec( ):

image-20210517193858559

Query( ):

image-20210517194007324

QueryRow( ):

image-20210517194037761

1、sql包的Open函数获取连接

func Init() {
	Db, err = sql.Open("mysql", "root:root@tcp(localhost:3306)/test")
	if err != nil {
		fmt.Println("sql.Open err", err)
	}
}

  
 

2、通过调用DB的Exec方法添加用户

func (u *User) AddUser() error {
	Init()
	sqlStr := "insert into users(username,password,email) values(?,?,?)"
	_, err := Db.Exec(sqlStr, u.Username, u.Password, u.Email)

	if err != nil {
		fmt.Println("Db.Exec", err)
	}
	return nil
}

  
 

3、调用DB的Query方法,根据用户的name从数据库中获取一条记录

func (u *User) GetUserById(name string) (*User, error) {
	Init()
	sqlStr := "SELECT username, PASSWORD,email  FROM users WHERE username=?"
	row := Db.QueryRow(sqlStr, name)
	var username string
	var password string
	var email string
	err := row.Scan(&username, &password, &email)
	if err != nil {
		fmt.Println("row.Scan", err)
		return nil, err
	}
	user := &User{
		Username: username,
		Password: password,
		Email: email,
	}
	return user, err
}

  
 

Row结构体及San方法的说明

image-20210517194622451

4、调用DB的QueryRow方法,从数据库中查询出所有的记录

func (u *User) GetUsers() ([]*User, error) {
	Init()
	sqlStr := "SELECT *  FROM users "
	rows, err := Db.Query(sqlStr)

	if err != nil {
		fmt.Println(" Db.Query err", err)
		return nil, err
	}
	var users []*User

	for rows.Next() {
		var id int
		var username string
		var password string
		var email string
		err := rows.Scan(&id, &username, &password, &email)
		if err != nil { fmt.Println("rows.Scan(&id,&username,&password,&email)", err) return nil, err
		}
		user := &User{ Id: id, Username: username, Password: password, Email: email,
		} users = append(users, user)
	}
	return users, err
}

  
 

Rows结构体说明

image-20210517194747296

Next方法和Scan方法说明

image-20210517194809298

本章完…

文章来源: blog.csdn.net,作者:HI!Code,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_46262567/article/details/116946355

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享