卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章34803本站已运行393

将数据库行读入映射字符串

将数据库行读入映射字符串

php小编小新将数据库行读入映射字符串是一种常见的数据处理技术。通过将数据库表的行数据读取并映射到字符串中,可以方便地进行数据操作和处理。这种技术在Web开发中经常用于将数据库查询结果转化为可读性更高的字符串格式,方便展示和使用。它不仅能提高数据处理的效率,还能简化代码逻辑,使程序更加简洁和易于维护。将数据库行读入映射字符串是一项重要的技能,对于开发者来说是必备的。

问题内容

我想从一个简单的 sql 表中读取结果,如下所示

customer key
A 12345
B 6789

现在,我想构造一个 map[string]string ,它的键值对等于行值,如下所示:

map[a:12345, b:6789]

但是,我在从查询结果中取出值并动态创建键值对时遇到了麻烦。我将提供代码的粗略轮廓(sql 连接不是问题,我已经弄清楚了)

import "database/sql"

func main() {

    // some code to connect to mssql...

    db, _ := sql.open("mssql", connstring)

    stmt := "select customer, key from tbl"
    rows, _ := db.query(stmt)
    defer rows.close()

    data := make(map[string]string)
    for rows.next() {
        // need help here grabbing each row pair and adding them to my map...
    }
}

我也愿意尝试使用空结构来执行此操作,其中字段成为结果集的第一列(动态),值成为结果集的第二列。

解决方法

您可以将值临时存储在两个变量中,然后将它们存储在地图中:

func main() {
    stmt := "SELECT customer, key from tbl"
    rows, _ := db.Query(stmt)
    defer rows.Close()

    data := make(map[string]string)
    var (
        consumer string
        key string
    )
    for rows.Next() {
        if err := rows.Scan(&consumer, &key); err != nil {
            // Handle err
        }

        data[consumer] = key 
    }

    for k, v := range data {
        fmt.Println(k, v)
    }
    // "A" "12345"
    // "B" "6789"

}

请注意,consumerkey 变量是在循环外部分配的,因此我们可以重复使用它们。即使值是空字符串,变量也会在每次迭代时被覆盖。

卓越飞翔博客
上一篇: 运行 go 构建时无法确定 go 中 C.getnameinfo 的名称类型
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏