2,190
社区成员
发帖
与我相关
我的任务
分享
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/utils?charset=utf8")
rows, err := db.Query("SELECT * FROM book")
rows, err := db.Query("SELECT * FROM book")
(*DB).Query: return db.QueryContext(context.Background(), query, args...)
(*DB).QueryContext: rows, err = db.query(ctx, query, args, cachedOrNewConn)
(*DB).query: dc, err := db.conn(ctx, strategy)
(*DB).conn: db.mu.Lock()
(*Mutex).Lock: if atomic.CompareAndSwapInt32(&m.state, 0, mutexLocked) {
sigpanic: panicmem()
panicmem: panic(memoryError)
import (
"database/sql"
"errors"
"fmt"
_ "github.com/Go-SQL-Driver/MySQL"
"os"
"web/vo"
)
//定义一个全局的数据库驱动
var db *sql.DB
func init() {
//连接数据库,此时不会直接产生连接,只有当进行数据库操作时才会产生连接
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/utils?charset=utf8")
if err != nil {
fmt.Println("连接数据库失败", err)
os.Exit(1)
}
db.SetMaxOpenConns(100)
db.SetMaxIdleConns(16)
}
func SearchAllBooks() (bookList []*vo.Book, err error) {
rows, err := db.Query("SELECT * FROM book")
if err != nil {
fmt.Println(err)
return
}
if rows == nil {
err = errors.New("查不到数据")
fmt.Println(err)
return
}
for rows.Next() {
var book *vo.Book = &vo.Book{}
err = rows.Scan(&book.Id, &book.Title, &book.Price)
if err != nil {
return
}
bookList = append(bookList, book)
}
return
}