Golang 讀取 mysql , null 字符串錯誤。

例子:

Paste_Image.png
var query = `SELECT buin, gid, firstMsgId, lastReadMsgId,maxMsgId, handle, state FROM XX
rows,err := helperDB.Query(query)
iferr != nil {
returnnil, err
}
list:= make([]*common.ListHelperAssignRsp, 0)
forrows.Next() {
u:= &common.ListHelperAssignRsp{}
rows.Scan(&u.Id,&u.SessId, &u.Assigner, &u.Handler, &u.Timestamp, &u.State,&u.Remark)
list= append(list, u)
}
returnlist, nil

自定義結(jié)構(gòu)體ListHelperAssignRsp

type ListHelperAssignRsp struct {
SessIdstring `json:"sessId"`
Buinint`json:"buin"`
Gidint`json:"gid"`
FirstMsgIdint`json:"firstMsgId"`
LastReadMsgIdint`json:"lastReadMsgId"`
MaxMsgIdint`json:"maxMsgId"`
Handlestring `json:"handle"`
Stateint`json:"state"`
}

如果按照上面的方式來讀取,讀取到第三行,handle,state均為0,原因就在rows.Scan讀取數(shù)據(jù)庫null是報(bào)錯,導(dǎo)致后面的不執(zhí)行。
解決方法有2個
修改結(jié)構(gòu)體
將ListHelperAssignRsp的Handle的類型改為sql.NullString,這樣就可以兼容null跟string。
第二個方法就是在設(shè)計(jì)數(shù)據(jù)庫的時候把Handle設(shè)計(jì)成空字符串
handler varchar(64) NOT NULL DEFAULT '',

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)庫查詢 我們了解了數(shù)據(jù)庫連接與連接池。拿到了連接當(dāng)然就是為了跟數(shù)據(jù)庫交互。對于數(shù)據(jù)庫交互,無怪乎兩類操作,讀和...
    人世間閱讀 19,614評論 2 18
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,779評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,839評論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • 這兩部分,永澄老師讀的很認(rèn)真,我感覺壓力好大,正好身體也不舒服,就放著了。 ,以往我會很焦慮,這種焦慮會導(dǎo)致我選擇...
    若梨若梨梨閱讀 207評論 0 0