我正在尝试使用go
sql驱动程序从数据库表中读取数据,并将值转换为[]map[string]interface{}
。列名称是映射的键,值是interface{}
。我将所有列添加到数组中。我以https://github.com/go-
sql-driver/mysql/wiki/Examples上的
“ RawBytes”代码示例作为示例开始。
但是,在示例中-所有列值都转换string
为如下所示,
// Fetch rows
for rows.Next() {
// get RawBytes from data
err = rows.Scan(scanArgs...)
if err != nil {
panic(err.Error()) // proper error handling instead of panic in your app
}
// Now do something with the data.
// Here we just print each column as a string.
var value string
for i, col := range values {
// Here we can check if the value is nil (NULL value)
if col == nil {
value = "NULL"
} else {
value = string(col) //ATTN : converted to string here
}
fmt.Println(columns[i], ": ", value)
}
fmt.Println("-----------------------------------")
}
有没有办法保留它,interface{}
这样我就可以在使用[]map[string]interface{}
基于的答案。使用它,您可以执行以下操作:
var myMap = make(map[string]interface{})
rows, err := db.Query("SELECT * FROM myTable")
defer rows.Close()
if err != nil {
log.Fatal(err)
}
colNames, err := rows.Columns()
if err != nil {
log.Fatal(err)
}
cols := make([]interface{}, len(colNames))
colPtrs := make([]interface{}, len(colNames))
for i := 0; i < len(colNames); i++ {
colPtrs[i] = &cols[i]
}
for rows.Next() {
err = rows.Scan(colPtrs...)
if err != nil {
log.Fatal(err)
}
for i, col := range cols {
myMap[colNames[i]] = col
}
// Do something with the map
for key, val := range myMap {
fmt.Println("Key:", key, "Value Type:", reflect.TypeOf(val))
}
}
然后,使用反射包,您可以根据需要获取每列的类型,如循环末尾所示。
这是通用的,适用于任何表,列数等。
开发目的 在一些简单的项目里面我们可能并不想用到复杂的ORM库,只想简单的使用原生SQL快速开发,或者是一些简单的CURD操作,这个库在sqlx的基础上进行了一些简单的封装,同时支持struct和map两种形式可以方便的进行快速开发,并且提供辅助结构体生成工具 genstruct 可以用于一键将数据库表转换成golang struct代码 功能特性 支持基于struct的增删改查快速操作 支持基于
我在使用Selenium web驱动程序访问列表框值时遇到了问题。 我能够粘贴值并传递我想选择的列表的类名,基本上我必须每次选择列表中显示的第一个选项 第6行给我以下错误 任何想法,我怎么能做到这一点?任何需要的信息让我知道。谢谢 更新代码
我试图通过网络驱动程序在“http://www.kayak.co.in/?ispredir=true”中选择入住和退房时间。无法选择任何日期。请帮帮我。
null 附加注释 从列表中删除歌曲时,不能在数组中留下空点。你将如何处理这件事?不要使用ArrayList来管理您的歌曲,您必须使用数组。不要为此赋值扩展ArrayList。我们稍后会这样做;-)如果您想这样做,您可以自由地编写额外的“帮助器”方法。我列出的方法是作业的最低要求。如果有帮助,您可以随时添加更多的方法。 为歌曲、播放列表和驱动程序类提交什么.java文件。 驱动程序类 我的问题是我
在Eclipse BIRT数据资源管理器中为查询生成器添加JDBC数据库连接: 选择“查询生成器的JDBC数据库连接” 就这样。我可以使用此数据源来使用数据集。 下一个。 我希望使用更灵活的“JDBC数据源”,而不是以前成功使用的“查询生成器的JDBC数据库连接”。哦,我看到MySQL没有驱动程序类-Derby和Sample只有两个默认条目。 似乎JDBC驱动程序的有效注册没有添加(或注册?)司机
对于ex,当我的chrome放在Compand提示符中时,会给出路径-/applications/google\chrome.app system.setproperty(“webdriver.chrome.driver”,“/applications/google/chrome.app”);WebDriver driver=new ChromeDriver(); driver.get(“http