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