【摘要】 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结构体有相应的方法,分别是Exec、Query和QueryRow
Exec( ):
Query( ):
QueryRow( ):
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方法的说明
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结构体说明
Next方法和Scan方法说明
本章完…
文章来源: blog.csdn.net,作者:HI!Code,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_46262567/article/details/116946355
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END