为了账号安全,请及时绑定邮箱和手机立即绑定

尝试在 DB 中写入时应如何处理错误

尝试在 DB 中写入时应如何处理错误

Go
慕桂英546537 2022-06-06 14:38:27
在这种特殊情况下,当我尝试在 DB 中写入时,不知道应该如何处理错误:所以我用这个函数插入数据库func SaveToDB(dateid string, content string) {    db, err := sql.Open("mysql", dbLink)    if err != nil {        log.Fatal(err)    }    queryString := fmt.Sprintf("INSERT INTO balances (dateid, content) VALUES('%v','%v');", dateid, content)    rows, err := db.Query(queryString)    if err != nil {          log.Fatal(err)    }    defer rows.Close()}但是我不想在错误重复时停止服务器所以我尝试了这个版本:func SaveToDB(dateid string, content string) {    db, err := sql.Open("mysql", dbLink)    if err != nil {        log.Fatal(err)    }    queryString := fmt.Sprintf("INSERT INTO balances (dateid, content) VALUES('%v','%v');", dateid, content)    rows, err1 := db.Query(queryString)    if err1 != nil {        thisErr, err2 := regexp.MatchString("Error 1062: Duplicate entry", err.Error())        if err2 != nil {            log.Fatal("ERROR: error occured while trying to perform regex on SaveToDB", err2)        }        if thisErr == true {            log.Println("ERROR: Not able to save in DB due to ducplicate: ", err1)        }else{log.Fatal("ERROR: error occured when trying to save to DB: ", err1)}    }    defer rows.Close()}但在这种情况下,我会感到恐慌。那么我怎样才能在它到达“defer rows.Close()”之前阻止这个函数执行呢?我想这就是恐慌的原因...
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

log.Fatal一旦拥有正确的数据,就不要使用和安装延迟代码:


rows, err := db.Query(queryString)

if err != nil {

    log.Error(err)

    return

defer rows.Close()


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号