Go sql insert update使用舉例

來源:互聯網
上載者:User

標籤:val   更新   update   fail   ase   ack   drive   upd   root   

本文結合使用情境簡單介紹sql中的insert、update的使用。

以下是代碼:

如果記錄已經存在,則更新,否則插入新記錄。

package mainimport (    "database/sql"    "fmt"    "log"    "time"    _ "github.com/go-sql-driver/mysql")var DB *sql.DBvar dataBase = "root:[email protected](127.0.0.1:3306)/web_portal?loc=Local&parseTime=true"func Init() {    var err error    DB, err = sql.Open("mysql", dataBase)    if err != nil {        log.Fatalln("open db fail:", err)    }    DB.SetMaxOpenConns(20)    DB.SetMaxIdleConns(15)    err = DB.Ping()    if err != nil {        log.Fatalln("ping db fail:", err)    }}func main() {    Init()    entry()}// update first, if not exist, then try to insertfunc entry() {    now := time.Now().Unix()    sql := fmt.Sprintf(        "update tbl_host set version=‘%s‘, timestamp=‘%d‘ where ip=‘%s‘",        "3.20.2",        now,        "192.168.11.23",    )    log.Println("sql:", sql)    result, err := DB.Exec(sql)    if err != nil {        log.Println("exec failed:", err, ", sql:", sql)        return    }    idAff, err := result.RowsAffected()    if err != nil {        log.Println("RowsAffected failed:", err)        return    }    log.Println("id:", idAff)    if idAff == 0 {        sql := fmt.Sprintf(            "insert into tbl_host(ip, version, timestamp) values (‘%s‘, ‘%s‘, ‘%d‘)",            "192.168.11.23",            "3.20.1",            now,        )        log.Println("not exsit, then try to insert")        tryInsert(sql)    }    log.Println("sucess")}func tryInsert(sql string) {    _, err := DB.Exec(sql)    if err != nil {        log.Println("exec failed:", err, ", sql:", sql)    }}

output:
第一次執行,記錄不存在,update不影響任何行,然後嘗試insert操作。

2018/04/30 22:15:13 sql: update tbl_host set version=‘3.20.2‘, timestamp=‘1525097713‘ where ip=‘192.168.11.23‘
2018/04/30 22:15:13 id: 0
2018/04/30 22:15:13 not exsit, then try to insert
2018/04/30 22:15:13 sucess

再次執行,此時已經存在同一個ip的記錄,只會執行update更新:

2018/04/30 22:13:30 sql: update tbl_host set version=‘3.20.2‘, timestamp=‘1525097610‘ where ip=‘192.168.11.22‘
2018/04/30 22:13:30 id: 1
2018/04/30 22:13:30 sucess

Go sql insert update使用舉例

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.