为了账号安全,请及时绑定邮箱和手机立即绑定

database/sql 和 database/sql/driver 中的命名参数

database/sql 和 database/sql/driver 中的命名参数

Go
幕布斯7119047 2021-07-10 11:07:43
我试图弄清楚在 go 的内置数据库/sql 包中使用命名参数的模式是什么。我查看了 oracle 驱动程序,但它似乎只是 C 库的包装器。人们是否以优雅的方式解决了这个问题?到目前为止,我只是通过将{0},{1}作为单元测试中的参数来解决这个问题,但是能够将它们正常用作 amap[string]interface{}或其他东西肯定会很好。有没有人有一个似乎惯用的想法或实现?作为参考,这里是一个测试:db := testConn()stmt, err := db.Prepare("return {0} as int1, {1} as int2")if err != nil {   t.Fatal(err)}rows, err := stmt.Query(123, 456)if err != nil {   t.Fatal(err)}rows.Next()var test intvar test2 interr = rows.Scan(&test, &test2)if err != nil {   t.Fatal(err)}if test != 123 {   t.Fatal("test != 123;", test)}if test2 != 456 {   t.Fatal("test2 != 456;", test2)}我正在做的Query是:func (stmt *cypherStmt) Query(args []driver.Value) (driver.Rows, error) {   cyphReq := cypherRequest{      Query: stmt.query,   }   if len(args) > 0 {      cyphReq.Params = make(map[string]interface{})   }   for idx, e := range args {      cyphReq.Params[strconv.Itoa(idx)] = e   }...
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信