Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Amazon Simple Db从列表中获取项目_Java_Amazon Web Services_Amazon_Amazon Simpledb - Fatal编程技术网

Java Amazon Simple Db从列表中获取项目

Java Amazon Simple Db从列表中获取项目,java,amazon-web-services,amazon,amazon-simpledb,Java,Amazon Web Services,Amazon,Amazon Simpledb,在下面的代码中,我查询SimpleDb以获得域中的项目列表以及“Favorited”属性。基本上,我正在尝试更新用户数据库,以获得每个项目被“青睐”的最新次数 itemNames[]工作得非常好。但是,我在提取属性时遇到问题。我开始设置列表属性,结果是[{Name:Favorited,AlternateNameEncoding:null,Value:5,AlternateValueEncoding:null,}]。但是,从这里开始,我不知道如何提取Value属性 最终结果我希望favorited

在下面的代码中,我查询SimpleDb以获得域中的项目列表以及“Favorited”属性。基本上,我正在尝试更新用户数据库,以获得每个项目被“青睐”的最新次数

itemNames[]工作得非常好。但是,我在提取属性时遇到问题。我开始设置列表属性,结果是[{Name:Favorited,AlternateNameEncoding:null,Value:5,AlternateValueEncoding:null,}]。但是,从这里开始,我不知道如何提取Value属性

最终结果我希望favoritedValues[I]=5

还有,我可能会以一种困难的方式来做这件事,有没有更简单的方法呢

private void updateFavorites() {
    AmazonClientManager clientManager = new AmazonClientManager();

    AmazonSimpleDBClient aSDbClient = clientManager.sdb();

    String domainName = "domain";
    SelectRequest selectRequest2 = new SelectRequest( "select Favorited from `" + domainName + "`" ).withConsistentRead( true );

    List values = aSDbClient.select( selectRequest2 ).getItems();

    String[] itemNames = new String[ values.size() ];
    String[] favoritedValues = new String[ values.size()];


    for ( int i = 0; i < values.size(); i++ ) {
        itemNames[ i ] = ((Item)values.get( i )).getName();
        List attributes  = ((Item)values.get( i )).getAttributes();

        favoritedValues[i] = No idea what goes here
    }
}
private void updateFavorites(){
AmazonClientManager客户端管理器=新建AmazonClientManager();
AmazonSimpleDBClient aSDbClient=clientManager.sdb();
字符串domainName=“domain”;
SelectRequest selectRequest2=新建SelectRequest(“从“+”域名+”中选择偏好”)。具有一致性读取(true);
List values=aSDbClient.select(selectRequest2.getItems();
String[]itemNames=新字符串[values.size()];
String[]favoritedValues=新字符串[values.size()];
对于(int i=0;i

开发指南没能帮到我。每次我通过谷歌搜索信息时,我都会在ListView上获得我所不需要的信息。

你可以循环属性并找到它们的名称和值

List<Item> values;
Item currentItem = buffer.get(i);
itemNames[i] = currentItem.getName();
List<Attribute> currentAttributes = currentItem.getAttributes();
String favorited = "";
for (Attribute anAttribute : currentAttributes) {
    if (anAttribute.getName().equals("Favorited")) {
        favorited = anAttribute.getValue();
    }
}
列表值;
Item currentItem=buffer.get(i);
itemNames[i]=currentItem.getName();
列表,它允许使用如下语法

PersistenceInterface store = new AmazonSdbHelper();
store.setDomain("domain");
store.query("SELECT * FROM domain");
while (store.hasNext()) {
    String key = store.next();
    String address = store.getAttributeAsString("address");
    Collection<String> phones = store.getAttributeAsCollection("phones");
    int visits = store.getAttributeAsInt("visits");
}
PersistenceInterface store=new AmazonSdbHelper();
store.setDomain(“域”);
store.query(“从域中选择*);
while(store.hasNext()){
String key=store.next();
字符串地址=store.getAttributeAsString(“地址”);
收集电话=store.getAttributesCollection(“电话”);
int visions=store.getAttributeAsInt(“访问”);
}

更好的是有一个名为JPA的项目,它为Amazon实现了JPA。我想试一试,有没有人有这方面的经验?

您的顶级解决方案似乎效率很低……特别是如果您有很多属性,并且您只尝试提取一个属性。这真的是唯一的办法吗?另外,我不熟悉for(Attribute-anaAttribute:currentAttributes)…您能解释一下吗?因为您有一个属性列表,所以必须遍历它才能找到一个。以防万一,当你找到一个循环时,你可以打破它。但这并不是低效的,列表上的循环速度非常快,特别是与SimpleDB的速度相比。这是乏味的,但最好是你写一些方法来为你这样做,就像我做的。至于循环,它是2004年在Java1.5中引入的。我对它进行了测试,你是对的,它不需要很长时间(至少对于一个小数据库来说)。这对我有用,谢谢!