gpt4 book ai didi

java - 如何将java中的值传递到查询cassandra数据库

转载 作者:行者123 更新时间:2023-12-02 03:03:49 25 4
gpt4 key购买 nike

我正在云上运行 cassandra 数据库。我创建了一个 Rest Web 服务来查询 cassandra 数据库。我想从将使用我的 Web 服务的 UI 的用户那里获取输入

以下是我运行的代码:

public String cql2(int psa)
{
Cluster.Builder clusterBuilder = Cluster.builder()
.addContactPoints("52.36.24.246").withPort(9042)
.withQueryOptions(new QueryOptions().setFetchSize(2000))
.withCredentials("username", "password");
Session session = clusterBuilder.build().connect();
String cqlStatement = "SELECT * FROM godfather.crime WHERE psa='"+psa+"' ALLOW FILTERING";
for (Row row : session.execute(cqlStatement))
{
cql=(row.toString());
}
return cql;
}
}

最佳答案

一般来说,当一个查询要在应用程序的生命周期中多次执行(带或不带不同参数)时,准备好的语句是最佳解决方案。

基本上你的代码将变成:

public class MyService {
private Cluster cluster;
private Session session;
private PreparedStatement query;

// exception handling not included to keep the code short
public void init() {
cluster = Cluster.builder()
.addContactPoints("52.36.24.246").withPort(9042)
.withQueryOptions(new QueryOptions().setFetchSize(2000))
.withCredentials("username", "password")
.build();
session = cluster.connect();
query = session.prepare("SELECT * FROM godfather.crime WHERE psa= ?");
}

public String execQuery(int psa) {
for(Row r : session.execute(prepared.bind(psa))) {
// your processing here
}
}

}

一些额外的细节:

  1. 建议每个应用程序仅初始化一次集群 session 。这些都是生命周期较长的元素,应该保留在身边。
  2. 建议只准备一次报表
  3. 为了保持简单,上面的代码中没有包含异常处理、初始化等内容。

如果您想了解有关准备语句的更多信息:

  1. Cassandra 与其他数据库一样,支持准备好的语句。您可以在 Wikipedia article 上阅读更多有关准备好的语句的优点的信息。
  2. Cassandra 中准备好的语句在 Prepared statements in the Java driver for Cassandra 中有详细记录。

关于java - 如何将java中的值传递到查询cassandra数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42057714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com