【问题标题】:Get sql rows from row从行中获取sql行
【发布时间】:2023-03-08 12:35:01
【问题描述】:

如何在 Go 中对 *sql.Rows 和 *sql.Row 使用一种解析(扫描)方法?

解析(扫描)方法使用一个代码解析一行

...
row := r.stmOne.QueryRow(id)
rows, err := r.stmOther.Query(ids, params)
parseRow(row, &item)
for rows.Next(){
    parseRows(rows, &item)
}
...

func parseRows(row *sql.Rows, item *typeItem) error {
    err := row.Scan(....) /// same
}

func parseRow(row *sql.Row, item *typeItem) error {
    err := row.Scan(....) /// same
}

【问题讨论】:

  • 当 row.Scan 已经这样做了,为什么还需要一个单独的解析函数?您想在 parseRow/parseRows 中添加哪些额外功能?

标签: sql go copy row rows


【解决方案1】:
type RowScanner interface {
    Scan(dest ...interface{}) error
}

func scanRowIntoItem(row RowScanner, item *typeItem) error {
    err := row.Scan(...)
}
row := r.stmOne.QueryRow(id)
rows, err := r.stmOther.Query(ids, params)
scanRowIntoItem(row, &item)
for rows.Next(){
    scanRowIntoItem(rows, &item)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2014-10-29
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多