将 Android Studio 连接到 Cosmos 数据库

时间:2021-03-06 09:30:37

标签: java android-studio azure-cosmosdb

我正在从事一个项目,用于将数据从 azure Cosmos 数据库检索到 Android Studio。但是,它有一个错误,我真的找不到任何解决方案。请帮忙,谢谢!

依赖项:实现 'com.azure:azure-cosmos:4.3.0'

import com.azure.cosmos.ConsistencyLevel;
import com.azure.cosmos.CosmosClient;
import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.CosmosContainer;
import com.azure.cosmos.CosmosDatabase;
import com.azure.cosmos.implementation.ConnectionPolicy;
import com.azure.cosmos.models.CosmosItemRequestOptions;
import com.azure.cosmos.models.CosmosQueryRequestOptions;
import com.azure.cosmos.util.CosmosPagedFlux;
import com.azure.cosmos.util.CosmosPagedIterable;

public class MainActivity extends AppCompatActivity {


    private static final String TAG = "";
    private final String databaseName = "smartwristbanddb";
    private final String containerName = "records";

    public CosmosDatabase database = null;
    public CosmosContainer container = null;
    public static CosmosClient client;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        System.out.println("Using Azure Cosmos DB endpoint: " + dbAccount.HOST);

     
        //  <CreateSyncClient>
            ConnectionPolicy policy = ConnectionPolicy.getDefaultPolicy();
            try {
                //getStartedDemo();
                client = new CosmosClientBuilder()
                        .endpoint(dbAccount.HOST)
                        .key(dbAccount.MASTER_KEY)
                        .consistencyLevel(ConsistencyLevel.SESSION)
                        .buildClient();


                database = client.getDatabase(databaseName);
                container = database.getContainer(containerName);

            } catch (Exception e) {
                e.printStackTrace();

            }

    }

错误如下:

W/m.example.myapp: type=1400 audit(0.0:9885): avc: denied { read } for name="somaxconn" dev="proc" ino=4276772 scontext=u:r:untrusted_app:s0:c28,c257,c512,c768 tcontext=u:object_r:proc_net:s0 tclass=file permissive=0 ---------- 
W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.azure.cosmos.implementation.DatabaseAccount.getEnableMultipleWriteLocations()' on a null object reference at com.azure.cosmos.BridgeInternal.isEnableMultipleWriteLocations(BridgeInternal.java:163) W/System.err: at com.azure.cosmos.implementation.RxDocumentClientImpl.initializeGatewayConfigurationReader(RxDocumentClientImpl.java:264) at com.azure.cosmos.implementation.RxDocumentClientImpl.init(RxDocumentClientImpl.java:281) at com.azure.cosmos.implementation.AsyncDocumentClient$Builder.build(AsyncDocumentClient.java:203) W/System.err: at com.azure.cosmos.CosmosAsyncClient.<init>(CosmosAsyncClient.java:79) at com.azure.cosmos.CosmosClientBuilder.buildAsyncClient(CosmosClientBuilder.java:649) at com.azure.cosmos.CosmosClient.<init>(CosmosClient.java:30) at com.azure.cosmos.CosmosClientBuilder.buildClient(CosmosClientBuilder.java:661) W/System.err: at com.example.myapp.MainActivity.onCreate(MainActivity.java:52) at android.app.Activity.performCreate(Activity.java:7972) at android.app.Activity.performCreate(Activity.java:7961) W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3496) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3680) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) W/System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:140) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:100) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2230) W/System.err: at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:227) at android.app.ActivityThread.main(ActivityThread.java:7802) at java.lang.reflect.Method.invoke(Native Method) W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1027)

1 个答案:

答案 0 :(得分:1)

您遇到了 Null 引用错误。请检查配置值(HOST、MASTER_KEY)是否正确,以及 clientdatabasecontainer 实例是否不是 null

我建议您按照以下分步教程来实现此功能:Tutorial: Build a Java web application using Azure Cosmos DB and the SQL API

相关问题