2017-06-13 177 views
0

我想查询我的sqlite数据库得到我的书表中的最后一个id然后插入数据与最后id + 1。我是新的去,我不能图了解如何设置我的lastid int变量。任何帮助将不胜感激。获取最后一条记录表格我的sqlite数据库使用去

func getBookLastID() { 

    var lastid int 
    err := db.QueryRow("select max(id) from books").Scan(&lastid) 
    fmt.Println(lastid) 
    return (lastid + 1) 
} 

func insertBook(name, author string, pages int, publicationDate time.Time) (int, error) { 
     //Create 
     var bookID int 

     var lastid int 
     lastid = getBookLastID() 

     err := db.QueryRow(`INSERT INTO books(id, name, author, pages, publication_date) VALUES($1, $2, $3, $4, $5)`, lastid, name, author, pages, publicationDate).Scan(&bookID) 

     if err != nil { 
       return 0, err 
     } 

     fmt.Printf("Last inserted ID: %v\n", bookID) 
     return bookID, err 
} 
+0

你的模式是什么样的?我通常使用自动增量的表格上的ID列 – Nevermore

+0

我想通了,我会发布我的结果。 @Nevermore – Justin

回答

0

我失踪了 “INT” 在FUNC

错误:

func getBookLastID() {.... 

正确:

func getBookLastID() int {.... 

纠正所有:

func getBookLastID() int { 

    var id int 

    err := db.QueryRow("select ifnull(max(id), 0) as id from books").Scan(&id) 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println("New record ID is:", id + 1) 
    return id + 1 
} 

func insertBook(name, author string, pages int, publicationDate time.Time) (int, error) { 
    //Create 

    lastid := getBookLastID() 


    res, err := db.Exec(`INSERT INTO books(id, name, author, pages, publication_date) VALUES($1, $2, $3, $4, $5)`, lastid, name, author, pages, publicationDate) 

    if err != nil { 
     return 0, err 
    } 

    rowsCreated, err := res.RowsAffected() 

     if err != nil { 
     return 0, err 
    } 

    return int(rowsCreated), err 

} 
相关问题