我试图用Java从VoltDB数据库中读取数据。现在,它可以使用SQL语句中的结果集来完成,但应该(我告诉)是另一种方法,这是VoltDB原生的,类似于将数据写入VoltDB数据库的方式(使用client.callProcedure) )。我无法弄清楚如何做到这一点;看起来它应该是一件非常简单的事情,但我不会在客户端看到任何简单的方法。
答案 0 :(得分: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));
}
您可以像这样调用AdHoc SQL,而不是procname和参数:
VoltTable table_a = client.callProcedure("@AdHoc","SELECT * FROM helloworld;").getResults()[0];
以上这些示例是同步或阻止调用。如果您希望应用程序使用异步调用,您还可以在调用时使用Callback对象,以便客户端继续执行后续代码。当处理回调的客户端线程收到响应时,结果可以传递给我们应用程序中的另一个线程来读取结果。
您可以在Java Client API Javadoc中详细了解API。