当前位置: 首页 > 面试题库 >

在Go database / sql包中查看带有参数的查询

冀望
2023-03-14
问题内容

我正在尝试测试将参数传递给sql.DB.Query方法的行为(使用database /
sql包和github.com/lib/pq上的PostgreSQL驱动程序)。处理原始查询字符串以查看如何插入参数后,是否有任何方法可以获取原始查询字符串?例如,我正在考虑编写一个准备好的查询,然后检查结果语句。有任何想法吗?谢谢!


问题答案:

它看起来不像在查询本身中插入参数。它发送查询,然后等待响应以发送参数。我分叉了pq并放入了一些日志代码-这是一个简单查询的输出:

 wes-macbook:testpq go run testpq.go
2014/01/03 19:08:56 bytes: [0 0 0 84 0 3 0 0 101 120 116 114 97 95 102 108 111 97 116 95 100 105 103 105 116 115 0 50 0 99 108 105 101 110 116 95 101 110 99 111 100 105 110 103 0 85 84 70 56 0 100 97 116 101 115 116 121 108 101 0 73 83 79 44 32 77 68 89 0 117 115 101 114 0 119 102 114 101 101 109 97 110 0 0]
2014/01/03 19:08:56 string: Textra_float_digits2client_encodingUTF8datestyleISO, MDYuserwfreeman
2014/01/03 19:08:56 bytes: [80 0 0 0 45 0 115 101 108 101 99 116 32 42 32 102 114 111 109 32 116 101 115 116 32 119 104 101 114 101 32 116 101 115 116 46 110 97 109 101 61 36 49 0 0 0]
2014/01/03 19:08:56 string: P-select * from test where test.name=$1
2014/01/03 19:08:56 bytes: [68 0 0 0 6 83 0]
2014/01/03 19:08:56 string: DS
2014/01/03 19:08:56 bytes: [83 0 0 0 4]
2014/01/03 19:08:56 string: S
2014/01/03 19:08:56 bytes: [66 0 0 0 20 0 0 0 0 0 1 0 0 0 4 97 115 100 102 0 0]
2014/01/03 19:08:56 string: Basdf
2014/01/03 19:08:56 bytes: [69 0 0 0 9 0 0 0 0 0]
2014/01/03 19:08:56 string: E
2014/01/03 19:08:56 bytes: [83 0 0 0 4]
2014/01/03 19:08:56 string: S

我所做的只是调整send()代码:

func (cn *conn) send(m *writeBuf) {
   b := (*m)[1:]
   binary.BigEndian.PutUint32(b, uint32(len(b)))

   if (*m)[0] == 0 {
      *m = b
   }

   // new code here
   log.Println("bytes:", *m)
   log.Println("string:", string(*m))

   _, err := cn.c.Write(*m)
   if err != nil {
      panic(err)
   }
}

我的示例代码虽然很琐碎:https :
//gist.github.com/8249430



 类似资料:
  • 问题内容: 我正在学习如何在Excel驱动的SQL查询中使用参数(实际上,我仍在学习SQL),我想更进一步,并在Excel中提供一个参数来过滤结果。 这是我的查询: 我需要做的是允许团队中的人在excel工作表中运行此查询,并在第二个JOIN中为“ GROUP_NAME”提供其组名。不幸的是,我无法使用语法(在此处找到),因为我需要从MODULE_FUNCTION表中提取所有结果,并且仅在提供的组

  • 问题内容: 有没有办法观察将由生成的SQL语句? 例如,我有这个:是否 可以查看其基础的原始SQL? 问题答案: 光滑2.X: 您可以按照Slick文档中所示打印查询语句: 对于其他类型的报表看,和。 光滑的3.X: 文件。

  • 问题内容: 这个问题已经在这里有了答案 : 从PDO准备好的语句中获取原始SQL查询字符串 (16个答案) 3年前关闭。 在PHP中,当使用带有参数化查询的PDO访问MySQL数据库时,如何检查最终查询(在替换了所有令牌之后)? 有没有办法检查数据库真正执行了什么? 问题答案: 因此,我想我将最终回答我自己的问题,以便为记录提供完整的解决方案。但是必须感谢本·詹姆斯和凯拉什·巴杜,他们为此提供了线

  • 我如何在java Spring中记录sql查询(使用实际参数)。 我的开发环境 Java SpringJdbcTemplate 我来阐述一下这个问题。 我的伪代码是这样的。 现在,如果我想记录SQL——记录发送给它的实际日期——我不知道如何做。 选项1:我总是可以记录SQL并分别记录参数,但我希望在日志中包含实际的SQL,以便支持人员可以复制粘贴SQL并在需要时从SQL客户端运行它。 选项2:我可

  • 问题内容: 我没有MS SQL(SQL Express 2008)的“完整”版本,所以我没有探查器工具。 我想查看由我的实体框架代码生成的SQL,但是我发现的所有示例都使用了 语法类型;但我的大部分查询更像是.. 语法类型。如何查看通过这种编码方式生成的SQL?有任何想法吗? 问题答案: Express Edition是否支持扩展事件?如果是这样,它将以类似于Profiler的方式捕获语句并sp完

  • SQL用例是否可以显示操作,返回到函数的结果,作为其else条件的结果? //(to_date(r.RENT_RETURN_DATE,'dd-mon-yyyy')-to_date(r.RENT_DUE_DATE,'dd-mon-yyyy')) ----返回一个整数// 当我执行上述查询时,会显示以下错误: 错误报告- SQL错误:ORA-00932:不一致的数据类型:预期CHAR得到编号00932