我正在为SQLException编写通用记录器,我想获取传递给PreparedStatement的参数,该怎么做?我能够得到他们的数量。
ParameterMetaData metaData = query.getParameterMetaData();
parameterCount = metaData.getParameterCount();
简短的回答:不能。
长答案:所有JDBC驱动程序都会将参数值保留在某个地方,但是没有标准的方法来获取它们。
如果要出于调试或类似目的而打印它们,则有几种选择:
创建一个传递JDBC驱动程序(使用p6spy或log4jdbc作为基础),该驱动程序保留参数的副本并提供公共API来读取它们。
使用Java Reflection API(Field.setAccessible(true)
是您的朋友)来读取JDBC驱动程序的私有数据结构。那是我的首选方法。我有一个工厂委托给特定于DB的实现,该实现可以解码参数,并允许我通过读取参数getObject(int column)
。
提交错误报告,并要求对异常进行改进。尤其是在告诉您出了什么问题时,Oracle真的很st。
问题内容: 我有一个带有以下方法签名的常规Java方法: 它打开一个连接,使用sql语句和可变长度数组中的参数构建一个,运行它,缓存(在中),关闭连接,然后返回缓存的结果集。 我在记录错误的方法中有异常处理。我将sql语句记录为日志的一部分,因为它对调试非常有帮助。我的问题是,记录String变量会记录带有?而不是实际值的模板语句。我想记录已执行(或尝试执行)的 实际 语句。 所以…有什么方法可以
问题内容: 我有一个带有以下方法签名的常规Java方法: 它打开一个连接,使用sql语句和可变长度数组中的参数构建一个a ,运行它,对进行缓存(在中),关闭连接,并返回缓存的结果集。 我在记录错误的方法中有异常处理。我将sql语句记录为日志的一部分,因为它对调试非常有帮助。我的问题是,记录String变量会sql用?代替实际值记录模板语句。我想记录已执行(或尝试执行)的实际语句。 所以…有没有办法
问题内容: 我正在尝试连接到数据库,运行查询并打印出查询。到目前为止,我已经完成了工作,但是我需要获取输出并将其中的特定部分分配给 我正在使用log4jdbc监视我的查询。 此刻,我得到如下记录的输出: 我想分配给。我该怎么做呢? 问题答案: 通常,a 将为您提供查询(包括绑定参数)。但这取决于的实际实现(例如,使用PostgreSQL隐式实现)。 您提到为您带来回报。我对 log4jdbc 并不
问题内容: 我有一个带有一些GET参数的URL,如下所示: 我需要获得的全部价值。我尝试读取该URL,但只有。如何使用JavaScript执行此操作? 问题答案: JavaScript 本身 没有内置处理查询字符串参数的内容。 在(现代)浏览器中运行的代码可以使用对象(它是浏览器提供给JS的API的一部分): 对于较旧的浏览器(包括Internet Explorer),您可以使用此polyfill
你好,我来自从URL获取JSON对象 我试着去买一顶帽子- 有人能告诉我我做错了什么吗?
问题内容: 我有这样的网址: 如何获取章节和帖子的参数值? 我的URL在Chapter参数的值中包含“&”。 问题答案: 您可以在Android中使用Uri类来完成此操作; https://developer.android.com/reference/android/net/Uri.html 这样,您甚至可以从查询参数中获取特定元素;