我最近实现了a package,它使用了database/sql
包。通过将SQL限制为非常简单的select/update/insert语句,我假定该软件包可以与database/sql
支持的所有DBMS一起使用。使用database/sql包创建通用代码?
然而,事实证明,某些数据库使用?
作为暂定值,而其他人使用$1
,$2
等,这意味着准备的语句会与某些DBMS但不与他人合作。
所以我想知道是否有任何技术使所有支持的驱动程序以通用的方式进行工作?还是有必要在每个地方都有DBMS特定的代码? (我认为这将使database/sql
提供的抽象有点没有意义)。我猜想使用非预处理语句不是一种选择,因为不同的DBMS有不同的方式来转义参数。
有什么建议吗?
https://github.com/jmoiron/sqlx是数据库/ sql之上的一项功能,可以处理1美元vs?我建议看看源代码。 – elithrar