簡體   English   中英

獲取 DynamoDB 表中所有項目的值並顯示(Android)

[英]Get values of all items in DynamoDB table and display (Android)

我在使用 DynamoDB 時遇到問題。 我不知道如何獲取 DynamoDB 的表(在本例中為 DynamoDBTable)中的所有項目並顯示它。 我嘗試使用 Scan 但它給了我 null 異常的錯誤。

掃描表

 public void ScanTable() throws Exception { DynamoDBMapper mapper = new DynamoDBMapper(client); System.out.println("Scanning Tesis"); DynamoDBScanExpression scanExpression = new DynamoDBScanExpression(); List<DynamoDBTable> result = mapper.scan(DynamoDBTable.class, scanExpression); System.out.println(result.toString()); for (DynamoDBTest tesis : result) { System.out.println(tesis.toString()); }

動態數據庫表

 @DynamoDBTable(tableName = "Tesis") public class DynamoDBTest { private String Title; private String id; private String Author; private String Year; private String Supervisor; private String Program; @DynamoDBHashKey(attributeName = "Id") @DynamoDBAutoGeneratedKey public String getId () { return id; } public void setId (String id) { this.id = id; } @DynamoDBAttribute(attributeName = "Title") public String getTitle() { return Title; } public void setTitle (String Title) { this.Title = Title; } @DynamoDBAttribute(attributeName = "Author") public String getAuthor () { return Author; } public void setAuthor (String Author) { this.Author = Author; } @DynamoDBAttribute(attributeName = "Year") public String getYear () { return Year; } public void setYear (String Year) { this.Year = Year; } @DynamoDBAttribute(attributeName = "Supervisor") public String getSupervisor () { return Supervisor; } public void setSupervisor (String Supervisor) { this.Supervisor = Supervisor; } @DynamoDBAttribute(attributeName = "Program") public String getProgram () { return Program; } public void setProgram (String Program) { this.Program = Program; } }

 6-28 21:35:47.816 10939-10939/com.example.user.test2 I/System.out﹕ Scanning Tesis 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ java.lang.NullPointerException 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper.scan(DynamoDBMapper.java:2007) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper.scan(DynamoDBMapper.java:1971) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at com.example.user.test2.DynamoGetItem.ScanTable(DynamoGetItem.java:53) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at com.example.user.test2.DynamoGetItem.onCreate(DynamoGetItem.java:30) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5411) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:139) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at android.os.Looper.loop(Looper.java:149) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5257) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 06-28 21:35:47.826 10939-10939/com.example.user.test2 W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)

在此處輸入圖片說明

我做錯了什么嗎?

AmazonDynamoDB db 是在最新版本的 Android SDK 的這一行上聲明的。 您的 NPE 正在調用db 字段的 scan方法。 似乎 AmazonDynamoDB 字段可能為空且未設置。 您是否創建了 DynamoDB 客戶端並將其注入 Mapper 中 換句話說,上面的客戶端變量是否設置? 最后,它似乎是您調用實例化List<DynamoDBTable> result = mapper.scan(DynamoDBTable.class, scanExpression);的初始片段List<DynamoDBTable> result = mapper.scan(DynamoDBTable.class, scanExpression); 應該使用DynamoDBTest.class而不是DynamoDBTable.class

List<DynamoDBTable> result = mapper.scan(DynamoDBTable.class, scanExpression);
    System.out.println(result.toString());

    for (DynamoDBTest tesis : result) {
       System.out.println(tesis.getTitle.toString());
    }

你會得到所有的頭銜

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM