2

我正在尝试使用 Java 从 VoltDB 数据库中读取数据。现在,它可以使用 SQL 语句中的结果集来完成,但应该(我被告知)有另一种方式,它是 VoltDB 原生的,类似于如何将数据写入 VoltDB 数据库(使用 client.callProcedure)。我不知道该怎么做;看起来这应该是一件非常简单的事情,但我没有看到任何简单的方法可以在客户端中做到这一点。

4

1 回答 1

1

是的,如果您使用 client.callProcedure 进行写入,您当然可以使用相同的 API 进行读取。这是一个简单的例子:

ClientResponse cr = client.callProcedure(procname,parameters);
VoltTable[] tables = cr.getResults();
VoltTable table_a = tables[0];
while (table_a.advanceRow()) {
    System.out.println("Column 0 is " + table_a.getString(0));
}

这是一个简短的示例:

VoltTable table_a = client.callProcedure(procname,parameters).getResults()[0];
while (table_a.advanceRow()) {
    System.out.println("Column 0 is " + table_a.getString(0));
}

除了 procname 和参数,您还可以像这样调用 AdHoc SQL:

VoltTable table_a = client.callProcedure("@AdHoc","SELECT * FROM helloworld;").getResults()[0];

上面的这些示例是同步或阻塞调用。如果您希望您的应用程序使用异步调用,您还可以在调用中使用 Callback 对象,这样客户端将继续执行后续代码。当处理回调的客户端线程接收到响应时,可以将结果传递给我们应用程序中的另一个线程以读取结果。

您可以在Java Client API Javadoc中阅读有关 API 的更多信息。

于 2014-07-30T20:36:42.380 回答