当前位置: 首页 > 知识库问答 >
问题:

Cassandra准备了两次语句绑定参数

微生嘉祥
2023-03-14

我有一个cql查询,我想执行。cql字符串如下所示:

SELECT * FROM :columnFamilyName WHERE <some_column_name> = :name AND <some_id> = :id;

我的应用程序在数据税驱动程序之上有两层抽象。在一个层中,我想绑定前两个参数,而在另一层中我想绑定最后一个参数。问题是,如果我绑定前两个参数,我会得到一个无法绑定另一个参数的BoundStatement。我错过了什么吗?能做到吗?

我们使用的是datastax驱动程序版本2.0.3。

谢谢,安纳托利。

共有1个答案

郏志诚
2023-03-14

您应该能够使用boundStatement.setXXXX(index,value)将任意数量的参数绑定到BoundStatement,如下所示:

BoundStatement statement = new BoundStatement(query);
statement.setString(0, "value");
statement.setInt(1, 1);
statement.setDate(2, new Date());
ResultSet results = session.execute(statement);

但问题是,您试图使用一个动态列族,它的值随着您想要绑定的值而变化。据我所知,这是不允许的,所以您应该为每个表准备一条语句,然后使用右绑定语句。

 类似资料:
  • 我想知道使用比有什么好处? 最简单的方法是: 如您所见,我可以将数据绑定到< code>preparedStatement而无需< code>boundStatements。< code>boundStatement在哪里有用?

  • 使用卡桑德拉准备语句时,将字段与静态值绑定是否有任何好处? 例如,即使我总是使用静态值“Active”,status是否也应该有一个bind变量?如果是,为什么? 更新用户设置status='Active',其中user_id=:userid

  • 我在调试中不断看到这个错误。登录cassandra, 在这个里面 因此,根据Cassandra中的这个标签,https://github . com/krasserm/akka-persistence-Cassandra/issues/33,我看到这是由于输入有效负载大小的增加,所以我将cassandra.yml中的< code > commit log _ segment _ size _ in

  • 问题内容: 以下是我使用Prepared Statement 插入到Oracle数据库中的代码。 我目前的工作方式很好吗?还是可以使用某些方法来进一步改进? 我正在使用的更新的代码:- 问题答案: 您可以考虑一次性使用和执行语句背面。另外,正如@pst在您的问题中所述,请考虑使用。 您将执行以下操作: 这个想法是为批处理更新设置一个限制,并且仅在达到特定限制时才执行数据库更新。这样,您就可以将数据

  • 我正在使用我生成的一个准备好的语句,但在Java抛出的语句上出现了语法错误。然而,当我将PS的toString复制并粘贴到数据库的phpmyadmin中时,它的执行完美无缺。有什么想法会出错吗,我很难理解? 编辑:更改为PS.ExecuteUpdate(查询);还是不起作用。