gpt4 book ai didi

Go 准备语句 vs 直接查询

转载 作者:IT王子 更新时间:2023-10-29 01:25:12 27 4
gpt4 key购买 nike

普遍的共识似乎是直接查询的语句不允许参数,而准备好的语句可以。

但是在 Go 的 database/sql 包中,您可以使用 ODBC 参数并将参数发送给 db.QueryRow() 和 db.Query() 之类的东西。因此看起来它们在功能上是等价的。

话虽如此,首先创建一个语句然后执行它有什么意义呢?假设语句首先针对数据库进行编译——这不会增加负载并因此降低性能,因为您要添加额外的行程吗?并且由于您可以从 Query/QueryRow 获取参数,这不会使语句成为一件坏事吗?

最佳答案

请记住,database/sql 包旨在涵盖所有理论上可能的 SQL 数据库系统的功能,而不会影响特定平台。

SQL driver 实例在运行时通过 sql.Register 注入(inject)。这些驱动程序不一定建立在 ODBC 之上,也可能是其他东西。

一些 SQL 数据库支持转义查询参数,一些不支持——一些支持准备好的语句的“编译”,另一些则不支持。

通过使其成为两步过程,驱动程序可以决定在何处以及如何转义查询参数以及如何将它们插入到查询中。

you are allowed to use the ODBC parameters and send parameters to such things as db.QueryRow() and db.Query()

方法有这个签名只是为了方便,在后台驱动程序仍然单独转义和查询。你可以看到这发生了herehere , 分别。

关于Go 准备语句 vs 直接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19899941/

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