java - 如何在 Android 中连接到 MongoDB 数据库?

标签 java android mongodb dbconnection

这就是我向项目添加 Java 驱动程序的方法

compile 'org.mongodb:mongo-java-driver:2.13.2'

当我运行我的 Android 应用程序时,Gradle 崩溃了。 如果我直接添加 jar,我的应用程序无论如何都会崩溃。

连接代码如下:

MongoClient mongoClient = new MongoClient("mongodb://Dbuser:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="086c6a78697b7b486c7b383c3f3e313a266567666f6764696a266b6765" rel="noreferrer noopener nofollow">[email protected]</a>:47692");
DB db = mongoClient.getDB("testdb");
Set<String> collectionNames = db.getCollectionNames();

我需要的只是从我的应用程序连接到 mongo 数据库。 我不确定我的连接字符串的正确性。 在我的数据库帐户中我发现:

通过标准 URI 使用驱动程序进行连接:mongodb://blablauser: [email protected] :47692/urdb

但在代码中它没有连接。

我使用 mongo-java-driver。但每次我尝试读取我的数据库时,我都会得到

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.artem.mongodb/com.example.artem.mongodb.MainActivity}: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=ds047692.mongolab.com:47692, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.SocketException: socket failed: EACCES (Permission denied)}, caused by {android.system.ErrnoException: socket failed: EACCES (Permission denied)}}]

Document myDoc = collection.find().first();//crash point

为什么我无法访问自己的数据库?

最佳答案

尝试使用这个

MongoClientURI mongoUri  = new MongoClientURI("mongodb://Dbuser:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9afef8eafbe9e9dafee9aaaeadaca3a8b4f7f5f4fdf5f6fbf8b4f9f5f7" rel="noreferrer noopener nofollow">[email protected]</a>:47692");
MongoClient mongoClient = new MongoClient(mongoUri);
DB db = mongoClient.getDB("testdb");
Set<String> collectionNames = db.getCollectionNames();

首先需要将 uri 转换为 MongoClientURI 格式。

关于java - 如何在 Android 中连接到 MongoDB 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31500779/

相关文章:

java - 基于数组的 Trie 实现。子数组中的非空值

node.js - 如何通过多个条件从数组中 $pull 多个对象

ruby-on-rails - rails 生成不适用于 mongoid

java - 在 swing 应用程序中显示网页

Android 中的 Java 代码编译器优化

java - SetcontentView报错InflateException

android - Android 上的 GeoTrust SSL 证书不受信任

java - Android viewholder 类范围广

android - 清除应用程序数据后应用程序警报管理器不工作

MongoDB 驱动程序抛出文件未找到异常