jjzjj

go - INSERT INTO MyTable(姓名,年龄,...)

coder 2024-07-08 原文

我如何使用 go standard 构建它? sql包让其他人可以阅读吗? 我需要添加很多字段。

result, err := db.Exec(
    "INSERT INTO MyTable (name, age, ...ALLLOOOT...) VALUES ($1, $2, ...ALLLOOOT...)",
    "gopher",
    27,
    ...ALLLOOOT...
)

编辑:奖金问题,你能使用这样的东西并从 db:"..." 中提取字段名称吗?

type MyTable struct {
    Age   int64   `db:"age" json:"age"`
    Name  string  `db:"name" json:"name"`
    ....
}

最佳答案

有不同的方法可以做到这一点,我做过的一种方法是创建键和值的数组,然后您可以使用它们来迭代和构建带有占位符的查询。

然后您将使用可变参数来填充占位符。

看起来像这样

keys := []string{"your", "keys", ...}
values := []interface{}{1, "two", ...}
placeholders := make([]string, len(values))
for idx := range values {
    placeholders[idx] = "?"
}
query := fmt.Sprintf("INSERT INTO (%s) VALUES (%s)", strings.Join(keys, ", "), strings.Join(placeholders, ", "))

result, err := db.Exec(query, values...)

这个 Playground 展示了使用 fmt.Printf 完成的类似操作

http://play.golang.org/p/NruF92EJqM

关于go - INSERT INTO MyTable(姓名,年龄,...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34757726/

有关go - INSERT INTO MyTable(姓名,年龄,...)的更多相关文章

  1. ruby-on-rails - Textmate 'Go to symbol' 相当于 Vim - 2

    在Railcasts上,我注意到一个非常有趣的功能“转到符号”窗口。它像Command-T一样工作,但显示当前文件中可用的类和方法。如何在vim中获取它? 最佳答案 尝试:helptags有各种程序和脚本可以生成标记文件。此外,标记文件格式非常简单,因此很容易将sed(1)或类似的脚本组合在一起,无论您使用何种语言,它们都可以生成标记文件。轻松获取标记文件(除了下载生成器之外)的关键在于格式化样式而不是实际解析语法。 关于ruby-on-rails-Textmate'Gotosymbol

  2. ruby-on-rails - 用于 Ruby 的 vim 中的全局 "Go to definition"? - 2

    自97年以来我一直在使用vi/vim进行各种快速编辑和管理任务,但最近才考虑使用它来替换Netbeans作为我选择的ruby​​编辑器。我发现一件事在Netbeans和Eclipse中非常有用的是Ctrl+Click“转到定义”功能,您可以在其中按住Ctrl键并单击一个类或方法,然后它将带您了解定义。现在,我玩过丰富的ctags和rails.vim,而且很接近,但没有雪茄。这就是我想要的:默认情况下在Netbeans和Eclipse中,您可以在本地rails中按住ctrl并单击本地方法或类项目,但你也可以ctrl+click定义在gems或用Ruby编写的系统库。以Netbeans为例

  3. ruby-on-rails - Rails 上的 ruby : How to have multiple submit buttons going to different methods (maybe with with_action? ) - 2

    这个问题在这里已经有了答案:HowdoIcreatemultiplesubmitbuttonsforthesameforminRails?(7个答案)关闭9年前。所以..'save'%>'library'%>然后在我的Controller中:with_actiondo|a|a.savedoenda.librarydoendend问题是只有一个操作被调用...两个submit_tags调用相同的操作...知道为什么吗?或者我如何获得两个按钮以将表单提交给两种不同的方法?

  4. DiFi: A Go-as-You-Pay Wi-Fi Access System 精读笔记(三) - 2

    IV.SYSTEMIMPLEMENTATIONWeadoptmodulardesignfollowingtheintegrationofblockchain.Itbringsmoreflexibilitybyseparatingtheimplementationofdifferentfunctionalities,sowecouldleveragetheadvantagesoftheblockchain-basedsmartcontractwhilereducingoverhead.Figure3illustrateshowdifferentmodulesareinvolvedintheint

  5. go-templates - 如何根据表达式有条件地在 Go 模板中设置变量,如果不使用 if 语句包装可能会导致错误 - 2

    问题我该如何做这样的事情:{{$use_ssl:=(ne$.Env.CERT_NAME"")}}其中$.Env.CERT_NAME可能为零/未定义。如果它是零,它给出这个错误:at:errorcallingne:invalidtypeforcomparison注意:我无法控制传递给Go模板的对象,因此必须完全在模板本身内解决这个问题。我尝试过的我试图通过首先检查它是否为非空来变通:{{$use_ssl:=(($.Env.CERT_NAME)&&(ne$.Env.CERT_NAME""))}}但它给出了这个错误:unexpected"&"inoperand所以我切换到这个,这在语法上是允

  6. Go time与string的相爱相杀 - 2

    time包与string包可以说是在Go语言的开发中常用的两个包实际开发过程中(例如web开发)经常会遇到time类型与string类型的交互,计算比较等场景首先来了解GO语言里非常浪漫的一个点,即2006-01-0215:04:05,GO语言诞生的时间,通常用来做时间的格式化time转stringt:=time.Now()//当前时间timeLayoutStr:="2006-01-0215:04:05"t.Format(timeLayoutStr)//返回值为string,可以用一个值来接收它上述例子中,将time类型t转换为string类型,并格式化为年-月-日时-分-秒,这里的格式化是可

  7. ruby-on-rails - 如何为电子邮件设置 Devise 发件人姓名 - 2

    尽管thisthread话不多说,我想你是这样在Devise初始化程序中设置发件人姓名的:app/config/initializers/devise.rbDevise.setupdo|config|config.mailer_sender="'MySite'"end但这对我不起作用。有谁知道正确的做法吗? 最佳答案 就是这样:config.mailer_sender='"Example.com"' 关于ruby-on-rails-如何为电子邮件设置Devise发件人姓名,我们在Stac

  8. ruby-on-rails - 在 Ruby 中获取人的年龄 - 2

    我想从一个人的生日获取他的年龄。now-birthday/365不起作用,因为有些年份有366天。我想出了以下代码:now=Date.todayyear=now.year-birth_date.yearif(date+year.year)>nowyear=year-1end是否有更像Ruby的方法来计算年龄? 最佳答案 我知道我来晚了,但是当试图计算闰年2月29日出生的人的年龄时,接受的答案会非常糟糕。这是因为对birthday.to_date.change(:year=>now.year)的调用创建了一个无效日期。我改用了下面的代

  9. javascript - 使用哈希 url 卡在 Angular ui-router State.go 上? - 2

    我正在研究ui-router。我有一个状态:.state('new-personal-orders',{url:'/orders/new-personal-orders/:catId?',template:''})在我的Controller中,我可以使用$state.go('new-personal-orders',null,{reload:true})在Html文件中我有一个anchor标记:Link如果标签被点击,状态就会改变,'new-personal-orders'变成当前状态,在url中有尾随散列。然后url看起来像:http://localhost:3000/orders/

  10. javascript - Javascript 中的年龄(+闰年)计算? - 2

    我读过这个question但有很多评论,有人说它是准确的,有人说它不准确。无论如何,我有这段代码可以用Javascript计算人的年龄:functioncalculateDiffYearByString(date){varcur=newDate();vardiff=(cur.getTime()-newDate(date))/(60*60*24*1000);returndiff/365.242;}现在,这部分vardiff=(cur.getTime()-newDate(date))/(60*60*24*1000);考虑所有实际天数(24hr)从开始日期到结束日期包括闰年考虑。它只是按24

随机推荐