Java 开发 2.0: 使用 Amazon SimpleDB 进行云存储,第 1 部分:开始使用 SimpleDB 和 Amazon SDK
2010-08-11 00:00:00 来源:WEB开发网由于两个比赛距离不同,所以基于距离执行搜索很合理,如清单 6 所示:
清单 6. 根据距离进行搜索
String disQry = "select * from `" + domain + "` where Distance > '13.1'";
SelectRequest selectRequest = new SelectRequest(disQry);
for (Item item : sdb.select(selectRequest).getItems()) {
System.out.println("Race Name: " + item.getName());
}
毫无疑问,返回的比赛是 Race_01,从数学 和字母角度来说都是正确的,26.2 大于 13.1。但当我添加一个 真的很长的比赛时,看看会发生什么。
清单 7. Leesburg Ultra Marathon
List<ReplaceableItem> data3 = new ArrayList<ReplaceableItem>();
data3.add(new ReplaceableItem().withName("Race_03").withAttributes(
new ReplaceableAttribute().withName("Name").withValue("Leesburg Ultra Marathon"),
new ReplaceableAttribute().withName("Distance").withValue("103.1")));
sdb.batchPutAttributes(new BatchPutAttributesRequest(domain, data3));
在清单 7 中,我添加了一个距离为 103.1 的比赛。当我从清单 6 返回查询时,猜猜是什么?对了,就是 103.1,按字母顺序来讲,它小于 13.1。这就是您看不到所列的 Leesburg Ultra Marathon 的原因(如果您在家跟着操作)!
现在看一下,当我运行一个不同的查询来查找较短的比赛时,会发生什么,如清单 8 所示:
清单 8. 看一下会出现什么!
String disQry = "select * from `" + domain + "` where Distance < '13.1'";
SelectRequest selectRequest = new SelectRequest(disQry);
for (Item item : sdb.select(selectRequest).getItems()) {
System.out.println("Race Name: " + item.getName());
}
更多精彩
赞助商链接