2016-03-20 43 views
0

如何使用Java中的TableAPI從Oracle NoSQL表中獲取所有行? 我可以通過主鍵值獲取記錄。例如:如何從Oracle NoSQL表中獲取所有行?

TableAPI tableH = kvstore.getTableAPI(); 
    Table myTable = tableH.getTable("myTable"); 
    PrimaryKey key = myTable.createPrimaryKey(); 
    key.put("item", "Hat"); 

    List<Row> myRows = null; 
    try { 
     myRows = tableH.multiGet(key, null, null); 
    } catch (ConsistencyException ce) { 
    } catch (RequestTimeoutException re) { 
    } 
    for (Row theRow: myRows) { 
     String itemType = theRow.get("item").asString().get(); 
    } 
    System.out.println(itemType); 

但我無法獲得主鍵值。

回答

0

要修改你的榜樣,您通過使用空的PrimaryKey的表中獲取所有行和使用的TableAPI.tableIterator()方法中的一種。關於示例TableAPI.getTable()的註釋將執行遠程調用,以便表句柄應該被隱藏並重用。

TableAPI tableH = kvstore.getTableAPI(); 
/* 
* get the Table, but be careful about doing this frequently, 
* as it performs a remote call. 
*/ 
Table myTable = tableH.getTable("myTable"); 
PrimaryKey key = myTable.createPrimaryKey(); 

try { 

    /* create and use an iterator on the Row value */ 
    TableIterator<Row> rowIter = tableH.tableIterator(key, null, null); 
    while (rowIter.hasNext()) { 
     Row row = rowIter.next(); 
     /* do something */ 
    } 

    /* 
    * Or... 
    * create and use an iterator on the PrimaryKey values. 
    * This is much faster than fetching the data as well if 
    * you only need fields in the primary key. 
    */ 
    TableIterator<PrimaryKey> keyIter = 
       tableH.tableKeysIterator(key, null, null); 
    while (keyIter.hasNext()) { 
     PrimaryKey key = rowIter.next(); 
     /* do something */ 
    } 
} catch (FaultException fe) { 
} 
相關問題