AWS Athena JDBC 准备语句

2023-11-22

我无法使 AWS Athena JDBC 驱动程序与PreparedStatement 和绑定变量一起使用。如果我将所需的列值直接放入 SQL 字符串中,它就可以工作。但如果我使用占位符“?”我用PreparedStatement的setter绑定变量,它不起作用。当然,我们知道我们必须使用第二种方式(用于缓存、避免SQL注入等)。

我使用 JDBC 驱动程序 AthenaJDBC42_2.0.2.jar。尝试使用占位符 '?' 时出现以下错误在 SQL 字符串中。当我从 JDBC 连接获取PreparedStatement 时,会引发该错误。它抱怨找不到参数。但我在代码中设置了它们。在获取PreparedStatement之前如何设置参数:-)?

java.sql.SQLException: [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. SYNTAX_ERROR: line 1:1: Incorrect number of parameters: expected 1 but found 0

at com.simba.athena.athena.api.AJClient.executeQuery(Unknown Source)
at com.simba.athena.athena.dataengine.AJQueryExecutor.<init>(Unknown Source)
at com.simba.athena.athena.dataengine.AJDataEngine.prepare(Unknown Source)
at com.simba.athena.jdbc.common.SPreparedStatement.<init>(Unknown Source)
at com.simba.athena.jdbc.jdbc41.S41PreparedStatement.<init>(Unknown Source)
at com.simba.athena.jdbc.jdbc42.S42PreparedStatement.<init>(Unknown Source)
at com.simba.athena.jdbc.jdbc42.JDBC42ObjectFactory.createPreparedStatement(Unknown Source)
at com.simba.athena.athena.jdbc42.AJJDBC42ObjectFactory.createPreparedStatement(Unknown Source)
at com.simba.athena.jdbc.common.SConnection.prepareStatement(Unknown Source)
at com.simba.athena.jdbc.common.SConnection.prepareStatement(Unknown Source)
at ****************************************************
Caused by: com.simba.athena.support.exceptions.GeneralException: [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. SYNTAX_ERROR: line 1:1: Incorrect number of parameters: expected 1 but found 0
... 37 more

难道我做错了什么 ?这是代码

    @Test
public void testWhichFails() throws SQLException {
    try (Connection connection = athenaConnexion()) {
        String sql = "select * from my_table where col = ? limit 10";
        try (PreparedStatement ps = connection.prepareStatement(sql)) {
            ps.setInt(1, 30);
            try (ResultSet rs = ps.executeQuery()) {
                while (rs.next()) {
                    System.out.println("rs.getString(1) = " + rs.getString(1));
                }
            }
        }
    }
}

@Test
public void testWhichWorks() throws SQLException {
    try (Connection connection = athenaConnexion()) {
        String sql = "select * from my_table where col = 30 limit 10";
        try (PreparedStatement ps = connection.prepareStatement(sql)) {
            //ps.setInt(1, 30);
            try (ResultSet rs = ps.executeQuery()) {
                while (rs.next()) {
                    System.out.println("rs.getString(1) = " + rs.getString(1));
                }
            }
        }
    }
}

Athena 仅支持此处列出的 SQL 函数Athena SQL 函数反过来又基于函数和运算符 Presto 版本 0.172与以下列表Athena 的 SQL 相关限制。新版Presto中可以使用Prepared statements急速文档。不过,Athena 尚不支持这个新版本。您可以随时写信给 Athena 支持团队,要求添加 PREPARE 功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS Athena JDBC 准备语句 的相关文章

随机推荐

  • 如何使用原始索引枚举切片?

    如果我想枚举一个数组 比如说map 我需要使用元素的索引及其值的函数 我可以使用enumerate 功能 例如 import Foundation let array Double 1 2 3 4 let powersArray array
  • constexpr std::array 与 static_assert

    include
  • C++ 控制台输出中的上标

    I d like to have my program output cm2 cm squared 如何制作上标2 正如 Zan 所说 这取决于您的标准输出支持的字符编码 如果它支持 Unicode 您可以使用 U 00B2 如果它支持源文
  • 生成分段迷宫的算法

    I want to generate a maze that looks like this 也就是说 它由一个方向上的路径组成 然后将这些路径连接起来 我一直在寻找一种算法来生成这样的迷宫 但没有成功 具体来说 我don t想要一个这样的
  • 我应该使用 mySQL 还是 MongoDB [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 目前有很多关于 NoSQL
  • JButton 扩展以占据整个框架/容器

    嘿大家 我正在尝试制作一个带有按钮和标签的 Swing GUI 我使用边框布局 标签 在北场 显示良好 但按钮占据了框架的其余部分 它位于中心场 知道如何解决这个问题吗 您必须将按钮添加到另一个面板 然后将该面板添加到框架 事实证明 Bor
  • Javascript:从数组中随机配对项目而不重复

    我正在尝试制作一个非常基本的 秘密圣诞老人 生成器 作为我的第一个 Javascript 项目之一 我已经搜索了几个小时来寻找这个问题的解决方案 但到目前为止我还没有发现任何有效的方法 我有一系列需要相互配对的名称 我成功地将它们配对 但现
  • 如何在 Windows 7 x64 上使用 Visual C++ 6 进行调试?

    当然答案是 你不能 或 使用 XP 模式 但我想知道是否可能 我遇到的问题是 每当我调试某个应用程序并命中断点时 当我停止调试器时 被调试者仍然卡住 它无法被杀死 我无法附加另一个调试器 它说它已经被调试 在我关闭 Visual C 之前它
  • 使用 Apollo 客户端在第二个查询中使用第一个查询的结果?

    我正在使用 Apollo React 和 Graphcool 我有一个查询来获取登录用户 ID const LoginServerQuery gql query LoginServerQuery loggedInUser id 我需要在另一
  • Console.Writeline 对性能的影响

    我有一个应用程序有 4threads 每个线程实际上是一个Timer并在特定的时间间隔内执行单独的工作 这些线程通过使用显示其日志Console Writeline 性能在此应用中非常重要 我想知道是否删除Console Writeline
  • 事件发射器从引导模式到父模式

    我想将模态事件从模态组件传递到模态的父组件 但由于某种原因 我似乎无法让 EventEmitter 工作 如果有人有想法 将不胜感激 主要代码如下 从 ng bootstrap 演示分叉的 非工作 plunk 在这里 http plnkr
  • 错误:无法卸载“wrap”。安装tensorflow-gpu时~=1.14

    我正在尝试安装以下版本的 TensorFlow GPU 因为 gitrepo 的作者建议了它here jalal goku examples pip install tensorflow gpu 1 14 Collecting tensor
  • Go 1.6 中的供应

    我已经阅读了尽可能多的文档和 StackOverflow 文章 但我没能使用 Go 1 6 中的新供应商功能进行导入 这是我整理的一个示例项目Goji去测试 目录结构是这样的 src main go vendor github com ze
  • Android - 无法找到与目标“Android 1.6”错误兼容的 AVD

    我第一次尝试运行 Android 版 Hello World 应用程序 但我不断收到 Failed to find an AVD compatible with target Android 1 6 当我尝试创建 AVD 时出错 我已尝试以
  • 为什么 git push origin master 会画 ASCII 艺术? [复制]

    这个问题在这里已经有答案了 当我跑的时候git push origin master 我看到了一张非常不寻常的 ASCII 图片 我跑了git push几百次了 以前从未见过这种情况 有什么解释吗 git push origin maste
  • 换行符或“\n”不起作用。

    你能告诉我为什么换行符 n 不起作用吗 itemsToWriteToFile Number 1 12 nNumber 2 13 nNumber 3 13 nNumber 4 14 itemsToWriteToFile str itemsTo
  • 在 LESS css 中增加一个变量

    如何在 LESS css 中增加变量 这是例子 counter 1 someSelector nameOfClass counter counter counter 1 someSelector nameOfClass counter 上面
  • 使用纯 CSS 隐藏一个元素的列表

    如果列表仅包含一个仅使用 CSS 的元素 是否有一种方法可以隐藏列表 奖励 想想 IE8 ul li hide this li ul But ul li show this li li and others li ul 我正在和所有兄弟姐妹
  • 使用 OpenStreetMap 从 data.frame 绘制点

    我对空间数据完全是新手 我有以下代码成功绘制了有界地图 我想添加 作为 data frame 存储的点 我提前道歉 无法从 OpenStreetMap 文档中弄清楚这一点 代码如下 library OpenStreetMap stores
  • AWS Athena JDBC 准备语句

    我无法使 AWS Athena JDBC 驱动程序与PreparedStatement 和绑定变量一起使用 如果我将所需的列值直接放入 SQL 字符串中 它就可以工作 但如果我使用占位符 我用PreparedStatement的setter