gpt4 book ai didi

pointers - 扫描错误 : sql: Scan error on column index 11: destination not a pointer

转载 作者:IT王子 更新时间:2023-10-29 02:10:21 66 4
gpt4 key购买 nike

我知道问题出在哪里,当我尝试从我的数据库调用中扫描字段时,我没有提供指针地址 - 但是在这种情况下,我不太确定如何解决它。

我有一个看起来像这样的结构:

type ItemsRequest struct {
Sku string `json:"sku"`
Name string `json:"name"`
Barcode string `json:"barcode,omitempty"`
Category struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Subcategories []interface{} `json:"subcategories,omitempty"`
CategoryPosition int `json:"categoryPosition,omitempty"`
ResourceURI string `json:"resource_uri,omitempty"`
} `json:"category,omitempty"`
CategoryPosition int `json:"categoryPosition,omitempty"`
LongDesc string `json:"longDesc,omitempty"`
MinQty int `json:"minQty,omitempty"`
MultQty int `json:"multQty,omitempty"`
UnitPrice string `json:"unitPrice,omitempty"`
ImageURLs []string `json:"imageURLs,omitempty"`
Variants []interface{} `json:"variants,omitempty"`
AdditionalPrices map[string]string `json:"additionalPrices,omitempty"`
audtdatetime int
}

AdditionalPrices 字段用于表示一个值对象,例如:

{
'UK': "12.34",
'AU': "14.00"
}

因此,我非常有信心该字段的 map[string]string 类型是正确的...

我正在检索数据以从我的数据库中填充此结构,然后尝试将结果扫描到此结构的实例中。在我的查询中,我有预定义数量的列,我想为其填充 AdditionalPrices

因此我从这个开始:

func getItemsFromDB() []*ItemsRequest {
rows, err := bcdataDBConnection.Query(`
SELECT *
FROM vProducts
WHERE max_audit_date_time > @AuditTime
`, sql.Named("AUDITTIME", 2016101412000000))

if err != nil {
log.Fatal("There was an issue with the query for items: ", err)
}

defer rows.Close()

var items []*ItemsRequest

for rows.Next() {
var item = &ItemsRequest{}
err := rows.Scan(
&item.Sku,
&item.Name,
&item.Category.ID,
&item.Category.Name,
&item.Category.CategoryPosition,
&item.LongDesc,
&item.Barcode,
&item.UnitPrice,
&item.MinQty,
&item.MultQty,
&item.CategoryPosition,
&item.AdditionalPrices["NZBASE"],
&item.AdditionalPrices["NZWWW"],
&item.AdditionalPrices["MMCMFR"],
&item.AdditionalPrices["MMBASE"],
&item.AdditionalPrices["AUBASE"],
&item.AdditionalPrices["MMCMAU"],
&item.AdditionalPrices["AUDSA"],
&item.AdditionalPrices["AUDVIC"],
&item.AdditionalPrices["AUDWWW"],
&item.audtdatetime,
)
if err != nil {
log.Fatal("Scan error: ", err)
}

items = append(items, item)
}

return items
}

但是这似乎不是正确的语法,所以我将其更改为:

func getItemsFromDB() []*ItemsRequest {
rows, err := bcdataDBConnection.Query(`
SELECT *
FROM vHandshakeProducts
WHERE max_audit_date_time > @AuditTime
`, sql.Named("AUDITTIME", 2016101412000000))

if err != nil {
log.Fatal("There was an issue with the query for items: ", err)
}

defer rows.Close()

var items []*ItemsRequest

for rows.Next() {
var item = &ItemsRequest{}
err := rows.Scan(
&item.Sku,
&item.Name,
&item.Category.ID,
&item.Category.Name,
&item.Category.CategoryPosition,
&item.LongDesc,
&item.Barcode,
&item.UnitPrice,
&item.MinQty,
&item.MultQty,
&item.CategoryPosition,
item.AdditionalPrices["NZBASE"],
item.AdditionalPrices["NZWWW"],
item.AdditionalPrices["MMCMFR"],
item.AdditionalPrices["MMBASE"],
item.AdditionalPrices["AUBASE"],
item.AdditionalPrices["MMCMAU"],
item.AdditionalPrices["AUDSA"],
item.AdditionalPrices["AUDVIC"],
item.AdditionalPrices["AUDWWW"],
&item.audtdatetime,
)
if err != nil {
log.Fatal("Scan error: ", err)
}

items = append(items, item)
}

return items
}

我的 IDE 更喜欢哪个,但是在运行它时出现错误:

2018/01/15 15:35:06 Scan error: sql: Scan error on column index 11: destination not a pointer

所以在这一点上,我不太确定如何从我的数据库调用中填充 AdditionalPrices 的值。

我需要做什么才能使用从数据库中获取的值填充 AdditionalPrices 映射?根据我代码中的键,我已经知道要为其分配值的映射键。

最佳答案

row.Scan 用于扫描数据库行中的字段。它无法以嵌套方式扫描字段的值。

所以只要说&item.AdditionalPrices扫描每一行的additionalPrices字段,如下:

    err := rows.Scan(
&item.Sku,
&item.Name,
&item.Category.ID,
&item.Category.Name,
&item.Category.CategoryPosition,
&item.LongDesc,
&item.Barcode,
&item.UnitPrice,
&item.MinQty,
&item.MultQty,
&item.CategoryPosition,
&item.AdditionalPrices,
&item.audtdatetime,
)

关于pointers - 扫描错误 : sql: Scan error on column index 11: destination not a pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48257544/

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