gpt4 book ai didi

sql-server - sql : Scan error on column index 0, name "": unsupported Scan, 将 driver.Value 类型 int64 存储到类型 *main.SMSBlast 中?

转载 作者:数据小太阳 更新时间:2023-10-29 03:20:30 33 4
gpt4 key购买 nike

我现在正在尝试 restful api,其中列 SequenceID 不是自动增量,因为故意的,当我像这样计数时,我的问题是库 gorm countSequenceId := db.Debug().Table("SMSBlast2").Count( &smsblast1) ,结果是 sql:列索引 0 上的扫描错误,名称“”:不支持的扫描,将 driver.Value 类型 int64 存储到类型 *main.SMSBlast

package main

import (
"encoding/json"
"fmt"
"github.com/gorilla/mux"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mssql"
"log"
"net/http"
"strconv"
"time"
)

type SMSBlast struct {
SequenceID int `gorm:"primary_key";column:"SequenceID"`
MobilePhone string `gorm:"column:MobilePhone"`
Output string `gorm:"column:Output"`
WillBeSentDate *time.Time `gorm:"column:WillBeSentDate"`
SentDate *time.Time `gorm:"column:SentDate"`
Status *string `gorm:"column:Status"`
DtmUpd time.Time `gorm:"column:DtmUpd"`
}

func (SMSBlast) TableName() string {
return "SMSBlast2"
}


func insertSMSBlast(w http.ResponseWriter, r *http.Request){
fmt.Println("New Insert Created")
db, err := gorm.Open("mssql", "sqlserver://sa:@localhost:1433?database=CONFINS")
if err != nil{
panic("failed to connect database")
}
defer db.Close()


vars := mux.Vars(r)
mobilephone := vars["mobilephone"]
output := vars["output"]

var(
smsblast1 SMSBlast
)
countSequenceId := db.Debug().Raw("SELECT COUNT (*) FROM SMSBlast2").Scan(&smsblast1)
fmt.Println(countSequenceId)
msg, err := json.Marshal(countSequenceId)
if err != nil{
fmt.Println(err.Error())
}



sequenceid1,_ := strconv.Atoi(string(msg))
fmt.Println("SequenceID : " , sequenceid1)

smsblasts := SMSBlast{SequenceID: sequenceid1,MobilePhone: mobilephone,Output:output, DtmUpd: time.Now()}
prindata := db.Create(&smsblasts)
fmt.Println(prindata)
}


func handleRequests(){
myRouter := mux.NewRouter().StrictSlash(true)
myRouter.HandleFunc("/smsblaststest",allSMSBlasts).Methods("POST")
myRouter.HandleFunc("/smsblaststestInsert/{mobilephone}/{output}", insertSMSBlast).Methods("POST")
log.Fatal(http.ListenAndServe(":8080",myRouter))

}

func main(){
fmt.Println("SMSBLASTS ORM")
handleRequests()
}

最佳答案

您似乎假设 Gorm 方法会为您返回结果。这不是它的工作原理。 Gorm 返回一个错误或一个 nil 并且你传递一个对你想要存储结果的变量的引用。所以要在某些东西上使用 Count() ,你会写类似

的东西
var count int
db.Model(&SMSBlast{}).Count(&count)
fmt.Printf("count: %d\n", count)

也就是说,如果你只是想确保每次都能得到一个新的序列 ID,为什么不使用自动递增呢?

type SMSBlast struct {
SequenceID int `gorm:"primary_key";column:"SequenceID";"AUTO_INCREMENT"`
...
}

关于sql-server - sql : Scan error on column index 0, name "": unsupported Scan, 将 driver.Value 类型 int64 存储到类型 *main.SMSBlast 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54712293/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com